私はその中にいくつかのファイルを含む2つのディレクトリ(test1とtest2)を持っています。 bashを作成してこれらのディレクトリで重複したファイル名とファイルサイズを見つけ、それらのいずれかをディレクトリから削除するにはどうすればよいですか?
答え1
必要な操作を実行するコマンドは次のとおりです。
for f in test1/*; do find test2 -name $(basename $f) -size $(stat -c %s $f)c -delete; done
説明する:
for f in test1/*
:test1の各ファイルを繰り返します。$(basename $f)
:ループによって渡されたファイルのデフォルト名を返します。$(stat -c %s $f)
: 繰り返されるファイルのサイズを返します。c
ブロックの末尾にはstat
出力がバイトで読み取られるようになっています。find
find test2 -name $(basename $f) -size $(stat -c %s $f)c -delete
:一致するファイルを見つけて削除します。-delete
テスト実行の場合は、この-delete
フラグを無視してください。
注:組み込みstat
コマンドはこのフラグをサポートしていないため、MacOSでは機能しません-c
。代わりにstatのgnuバージョンをインストールしてください。