我需要放置一个命令来搜索当前目录及其子目录中的所有文件 - 以〜开头,和/或以#开头或结尾的所有文件。命令行将显示并删除找到的所有文件。只允许一个命令:没有';'或'&&'或其他恶作剧。
这是我的命令:
find . -name "#*" -o -name "*#" -o -name "*~" -print -delete
但它只删除以〜
结尾的文件答案 0 :(得分:3)
您忘记用括号()
括起条件。这意味着只有最后一个条件才会触发操作-print
和-delete
。
默认值为-a
,这不需要括号,这就是为什么大多数查找命令(例如find -type f -name "pattern" -print
)都没有括号的原因。
你应该尝试:
find . \( -name "#*" -o -name "*#" -o -name "*~" \) -print -delete
答案 1 :(得分:0)
-print0
主要版本与xargs -0''
一样如何。
find . -type f -print0 | xargs -0 rm
za:temp za$ ls
file.txt file.txt~
za:temp za$ find . -name "*~" -print0 | xargs -0 rm
za:temp za$ ls
file.txt
或者使用xargs -I {}
加上你的命令做同样的事情。
# xargs -I {} to capture the value of find
find . -iname *something* | xargs -I {} rm {}
编辑:如果您看不到以#{1}}开头的文件,那么这些文件在#find .
等文件名称中有空格。您需要找到包含file.txt
之类空格的文件,然后删除空格。