如何批量删除文件名中包含特殊字符的文件

How to mass remove files that contain special characters in file name

Google Drive 有点疯狂,通过在文件名后附加多个“(1)”、“(1) (1)”来创建文件的多个迭代。到目前为止,我已经能够通过使用以下方法获得一份不错的清单:

tree -f -ifpugDs $PWD | grep -e '(1) (1)' | cut -d "]" -f 2 > output.txt

现在我无法使用 rm 命令删除它们。我不介意手动删除其中一些过滤器没有拾取的(例如“(2)(1)”),但是过滤器匹配的过滤器大约有 45K。

这将递归删除名称以 (1) 结尾的所有文件:

find . -name '*(1)' -exec rm {} +
  • -name '*(1) (1)' 只删除以双 1 结尾的文件。
  • -name '*([0-9])' 将匹配任何单个数字。
  • find . -mindepth 1 -maxdepth 1 -name '*(1)' -exec rm {} + 不递归。
  • 我会做 find . -name '*(1)' -exec echo rm {} \; 打印要执行的 rm 命令的整洁列表。审查它,然后真正删除 echo 到 运行。
  • \; 改回 + 是可选的,+ 效率更高。