ファイル名部分をテキストファイルと一致させ、それに応じて削除する最も効率的な方法は何ですか?

ファイル名部分をテキストファイルと一致させ、それに応じて削除する最も効率的な方法は何ですか?

次の約 1000 個のエントリを含むファイルがあります。

...
U9FzgsF2T-s
...

デフォルトではYouTubeの動画IDです。その後、次の名前のビデオでいっぱいのフォルダがあります。

007  - James Bond  - Theme-U9FzgsF2T-s.opus

これで、テキストファイルのアイテムと部分的に一致しないフォルダ内のすべてのファイルを削除したいと思います(もちろん削除できないテキストファイルを除く)。

これを行うエレガントな方法はありますか?すべてのファイルが繰り返しリストされているかどうかを確認できますが、エントリが1000を超えると、特にスクリプトが数分ごとに実行されるため、時間がかかります。それでは、どうすれば効率的にこれを行うことができますか?デフォルトでは、フォルダ内のアイテムと部分的に一致しないすべてのファイルを削除しますか?

答え1

たぶん、grep -vid-listの文字列のファイルのリストかもしれません。それは次のとおりです。

printf '%s\0' * | grep -zvF -e ID-LIST -f ID-LIST | xargs -0 echo
  • ファイルを削除するには、echo次のように置き換えます。rm

関連情報