如何批量删除文件名中包含特殊字符的文件
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
到 运行。
- 将
\;
改回 +
是可选的,+
效率更高。
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
到 运行。 - 将
\;
改回+
是可选的,+
效率更高。