次の内容を含むポータブルディスクがあります。
/media/usb1/CBCradio3/1.wav
/media/usb1/CBCradio3/2.wav
/media/usb1/CBCradio3/3.wav
/media/usb1/CBCradio3/4.wav
/media/usb1/podcasts/1.wav
/media/usb1/podcasts/2.wav
/media/usb1/podcasts/3.wav
次の内容を含むハードドライブもあります。
/home/user/Music/CBCradio3/2.wav
/home/user/Music/CBCradio3/3.wav
/home/user/Music/radio12/1.wav
/home/user/Music/radio12/2.wav
データをコピーしたいのですが、中にフォルダ名が/Music/
既に存在する場合は無視してください。
つまり、フォルダに混在したデータが含まれたくありません。通常のコピーを使用してドライブをコピーすると、次の結果が得られます。
/home/user/Music/CBCradio3/1.wav <--added to folder
/home/user/Music/CBCradio3/2.wav
/home/user/Music/CBCradio3/3.wav
/home/user/Music/CBCradio3/4.wav <--added to folder
/home/user/Music/podcasts/1.wav <--added whole folder
/home/user/Music/podcasts/2.wav <--added whole folder
/home/user/Music/podcasts/3.wav <--added whole folder
/home/user/Music/radio12/1.wav
/home/user/Music/radio12/2.wav
しかし、コンテンツをマージしたくありません。フォルダがある場合は、コンテンツのコピーをスキップする必要があります。この目標をどのように達成できますか?
- コピーしようとしましたが、フォルダの内容がマージされました
mc
。thunar
- 次のディレクトリには
.../usb1/
追加のサブディレクトリは含まれていません。
ベストアンサー1
あなたの説明によると、これは再帰的な問題ではありません。foo
ソースとターゲットの両方に存在する場合、foo
ストーリーの終わりにはコピーされません。したがって、単純なシェルループでこの問題を解決できます。
source=/media/usb1
destination=/home/user/Music
test -d "$destination" || mkdir -- "$destination"
for x in "$source"/*; do
if ! [ -e "$destination/$x" ]; then
cp -Rdp "$x" "$destination/"
fi
done
(ただし、この要件には問題があります。たとえば、レプリケーションが中断されると、ターゲットの一部のディレクトリだけが残り、回復する方法がないか、回復する必要がある項目を知ることもできません。)