複数の場所とドライブにほぼ同じファイルと名前のフォルダがあります。みんな一箇所に移動したいです。構造は次のとおりです。
Folder 1
--> Folder 1.1
-----> File1.txt
-----> File2.txt
Folder 2
--> Folder 2.1
-----> File1.txt
-----> File2.txt
...
-----> FileN.txt
他のドライブの別の場所にすべて移動したいです。コピーや移動時に移動されるファイルの名前をFileN-copy-1.txtなどに変更したいと思います。これは、MacのFinderでファイルを移動するときの動作と似ています。
rsyncを試してみましたが、移動中の新しいファイルの名前を変更するオプションがないようです。
どんな助けでも大変感謝します。
ベストアンサー1
次のように単純なbashスクリプトを作成できます
#!/bin/bash
MyFolder=/my/folder
DestFold=/destinatin/folder
CpNum=10
i=0
for FlN in $MyFolder; do
FlNo = echo $FlN |awk -F\/ '{print $NF}'
if [! -f $DestFold/$FlNo ]; then
cp $FlN $DestFold/
else
FlNo = echo $FlN |awk -F\/ '{print $NF}'
while [ $i -lt $CpNum ]; do
i=$[$i+1]
if [ ! -f $DestFold/${FlNo%.txt}-copy-$i.txt ]; then
cp $FlN $DestFold/${FlNo%.txt}-copy-$i.txt
i=$CpNum
fi
done
fi
done
したがって、検索フォルダとターゲットフォルダを入力してスクリプトを実行します(実行可能にする前に)。
chmod 755 yourscript
スクリプトはファイルを見つけて変数に入れ(FlN)、変数をフォルダーなしでファイル名に切り捨てるか(FlNo)、そのようなファイルがない場合はコピーを作成します。存在する場合は、追加されたファイルを生成します。-コピー-X
ファイル名の最後の直前(Xはコピー数)です。変数は$CpNum
ファイルあたりの最大コピー数です(安全に増やすことができます)。現在は.txtファイルに適用されますが、変更できます。パラメータを使用してスクリプトを呼び出すオプションを追加したり、さまざまな拡張機能にすることができます。