回答:
これを行うには、単純な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キーを押すと完了です。そのファイルは永久に失われます。ゴミ箱に移動して、探している結果を確実に取得してください。
findutils
homebrewを使用してGNU をインストールした場合は、ターミナルでcd
to 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