0

別々のフォルダーに同じ名前のファイルがたくさんあります。

例えば、

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

しかし、それらを1つのディレクトリにコピーしたいと思います:

/path/to/your/directory/results/

ので、私は持っています:

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

問題は、私が書いたスクリプト、ファイルが互いに上書きすることです。

ありがとう

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改良が必要な場合はスクリプトを呼び出す必要がありますが、この1つのライナーで十分だと思います

于 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 に答える