我有一个包含大约 1000 个条目的文件,如下所示:
...
U9FzgsF2T-s
...
基本上都是 YouTube 视频 ID。然后我有一个充满视频的文件夹,其名称如下:
007 - James Bond - Theme-U9FzgsF2T-s.opus
现在我想删除文件夹中与文本文件中的条目不部分匹配的所有文件(当然文本文件除外,无法删除它)。
有什么优雅的方法可以做到这一点?我知道我可以循环遍历所有文件并检查它们是否已列出,但在 1000 个条目和不断增长的情况下,这将花费大量时间,特别是因为该脚本每隔几分钟执行一次。那么我怎样才能有效地做到这一点呢?基本上删除与文件夹中的条目不部分匹配的每个文件?
答案1
也许是grep -v
针对 id-list 中的字符串的文件列表。就像是:
printf '%s\0' * | grep -zvF -e ID-LIST -f ID-LIST | xargs -0 echo
- 替换
echo
为rm
以删除文件