我有一堆文件在不同的文件夹中,它们具有相同的名称。
例如,
/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
等
问题在于我写的脚本,文件会互相覆盖。
由于
答案 0 :(得分: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
答案 1 :(得分: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}或者......无论哪个使它成为uniq,理想情况下它应该用脚本编写,如果需要进一步细化,_1
应该调用脚本,但我认为这个内容应该足够了
答案 2 :(得分:0)
result-0001.pdf
result-0002.pdf
,rename --no-act --verbose 's/.*/sprintf "result-%04d.pdf", ++$main::Mad/e' /path/to/your/directory/results/*/result.pdf
等,以便您可以毫无问题地移动它们:
--no-act
如果您对结果感到满意,请移除{{1}}。