终端中的unix find命令不起作用

时间:2016-08-02 00:59:24

标签: unix terminal

我需要放置一个命令来搜索当前目录及其子目录中的所有文件 - 以〜开头,和/或以#开头或结尾的所有文件。命令行将显示并删除找到的所有文件。只允许一个命令:没有';'或'&&'或其他恶作剧。

这是我的命令:

find .  -name "#*" -o -name "*#" -o -name "*~"  -print -delete 

但它只删除以〜

结尾的文件

2 个答案:

答案 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之类空格的文件,然后删除空格。