【发布时间】:2016-08-02 00:59:23
【问题描述】:
我需要放置一个命令来搜索当前目录及其子目录中的所有文件 - 以 ~ 结尾,和/或所有以 # 开头或结尾的文件。命令行将显示并擦除找到的所有文件。只允许使用一个命令:没有 ';' 或 '&&' 或其他恶作剧。
这是我的命令:
find . -name "#*" -o -name "*#" -o -name "*~" -print -delete
但它只会删除以 ~ 结尾的文件
【问题讨论】:
-
尝试使用单引号代替双引号作为名称通配符。一些 shell 会用双引号为你做插值,就像 perl 和 php 用字符串做的一样。
-
我很确定这不是问题所在。我在这里看到了同样的问题(使用 GNU find 4.4.2)。我不知道是什么问题。
-
您忘记将条件括在括号
()中。因此只有最后一个条件触发了-print和-delete。试试find . \( -name "#*" -o name "*#" -o name "*~" \) -print -delete。 -
@alvits:您应该将其发布为答案。 (现有答案可以诊断问题,但没有给出解决方案。)
-
@alvits 将其作为答案,效果惊人