rsyncを使用してファイルを含むディレクトリをコピーし、--remove-source-filesを使用してrsyncにソースファイルを削除します。残念ながら、ディレクトリは削除されないので、空のディレクトリをすべて削除したいと思います。下にソース1とソース2。 find -exec rmdirコマンドはこれを行いますが、残念ながらSOURCEディレクトリ自体も削除されます。
copy.sh
SOURCE1="/mnt/download/transmission/complete/"
SOURCE2="/mnt/download/sabnzbd/completed/"
sudo rsync --remove-source-files --progress --ignore-existing -vr /mnt/download/transmission/complete/ /mnt/dune/DuneHDD_1234
sudo rsync --remove-source-files --progress --ignore-existing -vr /mnt/download/sabnzbd/completed/ /mnt/dune/DuneHDD_1234
find $SOURCE1 -not -name "complete" -type d -empty -prune -exec rmdir --ignore-fail-on-non-empty -p \{\} \;
find $SOURCE2 -not -name "completed" -type d -empty -prune -exec rmdir --ignore-fail-on-non-empty -p \{\} \;
私も次のコードを試しました
*
find $SOURCE1 -mindepth 2 -type d -empty -prune -exec rmdir --ignore-fail-on-non-empty -p \{\} \;
find $SOURCE2 -mindepth 2 -type d -empty -prune -exec rmdir --ignore-fail-on-non-empty -p \{\} \;
そしていいえ
*
find $SOURCE1 -type d -empty -prune -exec rmdir --ignore-fail-on-non-empty -p \{\} \;
find $SOURCE2 -type d -empty -prune -exec rmdir --ignore-fail-on-non-empty -p \{\} \;
mkdir testを追加してSOURCE1を "/mnt/download/transmission/complete/test"に変更すると、作成したディレクトリは常に削除されますが、これを正しい方法で実行したいと思います。
例: 6 つのディレクトリを作成しました。
test10/
test10/test11/
test10/test11/test12/
test10/test11/test12/test
test1/
test1/test2/
test1/test2/test3/
test1/test2/test3/test
copy.shを実行した後、ターゲットのディレクトリとファイル(test1/test2/test3/testとtest10/test11/test12/test)の完全なコピーを取得し、以下を含むソースのディレクトリとファイルを削除しました。ソース($ SOURCE1および$ SOURCE2)自体。
ソースディレクトリ自体を除外するようにfindに指示する方法はありますか?つまり、次のディレクトリの下のすべての内容を削除する必要がありますが、ディレクトリ自体は削除しないでください。
SOURCE1="/mnt/download/transmission/complete/"
SOURCE2="/mnt/download/sabnzbd/completed/"
ベストアンサー1
を使用するには、ソースディレクトリの下のレベルを最初に見つけるためにfind
フラグを追加する必要があります。-mindepth 1
ls -d */
ただし、ディレクトリ名の印刷などのさまざまなツールを使用することもできます。