0

我在不同的文件夹中有一堆文件,它们具有相同的名称。

例如,

/path/to/your/directory/1/results.pdf
/path/to/your/directory/2/results.pdf

但是,我想将它们复制到一个目录:

/path/to/your/directory/results/

所以我有:

/path/to/your/directory/results/results-1.pdf 
/path/to/your/directory/results/results-2.pdf  

ETC

麻烦的是我写的脚本,文件会互相覆盖。

谢谢

4

3 回答 3

1

我经常这样做

#!/usr/bin/sh

for i in `find <source_dir_path> -type f`
do
new=`echo $i|nawk -F"/" '{split($NF,a,".");print "<target_dir_path>"a[1]"_"$(NF-1)"."a[2]}'`
cp $i $new
done
于 2013-05-31T07:12:27.483 回答
0

也许这样的事情会帮助你 find . -type f -exec sh -c 'if [ ! -e ../aaa/{} ]; then cp {} ../aaa/;else i=0; while [ -e ../aaa/{}_${i} ]; do ((i++)); done; cp {} ../aaa/{}_${i}; fi' \;

所以基本上它从当前目录搜索,对于任何文件,它都会复制到../aaa/目录,如果已经存在任何这样的文件,它将追加_0_1或......无论哪个使它成为唯一,理想情况下它应该写在一个脚本中如果需要进一步改进,find -exec应该要求脚本,但我认为这一行就足够了

于 2013-05-31T06:58:26.683 回答
0

要将文件重命名为等result-0001.pdfresult-0002.pdf以便您可以毫无问题地移动它们:

rename --no-act --verbose 's/.*/sprintf "result-%04d.pdf", ++$main::Mad/e' /path/to/your/directory/results/*/result.pdf

--no-act如果您对结果满意,请删除。

于 2013-05-31T11:03:06.003 回答