回答:
これを行うには、単純なbashスクリプトを使用できます。
for file in *.*; do if [ -f "/FolderA/${file}" ]; then rm "/FolderB/$file"; fi; done;このスクリプトは、FolderAに既に存在するファイルを削除する場所であるFolderBに既にいることを前提としています。
画像ファイルの拡張子(.png、.gifなど)がわかっていて、正確なフォルダー名がある場合は、微調整できます。そのため、代わりにまたは*.*を使用できます。*.png*.gif
より安全なバージョン:
for file in *.*; do if [ -f "/FolderA/${file}" ]; then mv "/FolderB/$file" ~/.Trash; fi; done;これにより、ファイルがゴミ箱に移動します。使用rmは一方通行です。rmコマンドでEnterキーを押すと完了です。そのファイルは永久に失われます。ゴミ箱に移動して、探している結果を確実に取得してください。
findutilshomebrewを使用してGNU をインストールした場合は、ターミナルでcdto folderBを入力します。
echo rm $(find /path/to/folderA -type f -printf "%P\n")出力を確認してください。削除するファイルがリストされている場合は、ファイルechoを実際に削除せずに繰り返します。
findシステムのデフォルトにはがありませんが-printf、
echo rm $(find /path/to/folderA -type f -execdir {} \; )(folderB!からも発行されます)は同じジョブを実行する必要があります(ここではテストできません)。
-deleteますか?
                    -delete私の知る限り、そのような機能はありません。
                    フォルダーBにフォルダーAのすべての画像とさらに1000がある場合、フォルダーAを削除するだけです!
シンプル!
ただし、フォルダBに9000個の画像があり、フォルダAに9000個の画像があるが、フォルダBにはフォルダAのすべての画像がないdiffという違いがある場合は、違いを見つけるために使用します。
とはいえ、これはファイル名の違いにすぎません。同じ名前を共有する2つの画像がある場合がありますが、これはまったく異なる問題です。
コード:
diff -rq folder1 folder2
rは、サブディレクトリを含む各ディレクトリを再帰的に見るようにdiffに指示します。qスイッチは、diff briefモードを設定します。短いモードを設定しなかった場合、diffは2つのフォルダー間でどのファイルが異なるかを示すだけでなく、両方の場所に存在するが同一ではないテキストファイルの実際の行ごとの違いも表示します。
;前に行方不明then。fi;前に行方不明done