このようなディレクトリがあります。
Main Directory
SubDirectory
SubsubDirectory1
xx.jpg
xx,jpg
SubsubDirectory2
xx.jpg
xx,jpg
SubDirectory
SubsubDirectory1
xx.jpg
xx,jpg
SubsubDirectory2
xx.jpg
xx,jpg
SubDirectory
SubsubDirectory1
xx.jpg
xx,jpg
SubsubDirectory2
xx.jpg
xx,jpg
SubsubDirectory1のすべてのファイルをターゲットディレクトリにコピーしたいと思います。
ベストアンサー1
ファイル名が一意でない場合
cp "Main Directory"/*/Subsubdirectory1/* destdir
ターゲットの一部のファイルが上書きされます。この場合も失敗します。数千一致するパス名。
この問題を解決するには、GNUを使用してくださいcp
。
for pathname in "Main Directory"/*/Subsubdirectory1/*; do
cp --backup=numbered "$pathname" destdir
done
これにより、上書きされるファイルのバックアップ番号が生成されます。
同じことがGNU以外のものを使用している場合cp
:
for pathname in "Main Directory"/*/Subsubdirectory1/*; do
# create first stab at destination pathname
dest="destdir/${pathname##*/}"
i=0
while [ -e "$dest" ]; do
# destination name exists, remove backup number from end of
# pathname and replace with next one in the sequence
i=$(( i + 1 ))
dest="${dest%.~*~}.~$i~"
done
cp "$pathname" "$dest"
done