フォルダには100万を超えるイメージを持つ静的アセットサーバーがあり、そのほとんどはもはや必要ありません。
.jsonファイルにまだ必要なファイル名のリストがあります。
bashでファイル名がjsonリストにない場合は、そのディレクトリ内のすべてのファイルをどのように削除しますか?
よろしくお願いします!
答え1
これらのファイル名に引用符が必要ないとします(スペースなし、特殊文字なし)。
$ cat keep.json
["file1.png", "file2.png"]
find -not '(' $(php -r 'echo "-name " . implode(" -o -name ", json_decode(file_get_contents("keep.json")));') ')' -delete
内容を削除したいフォルダからコマンドを実行します。なしで実行すると、-delete
一致するファイルのリストが削除されるのではなく表示されます。