find linux命令无法删除文件

时间:2016-11-07 08:53:15

标签: shell find

这是我的shell命令行:

find /home/ -depth -type f -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*"  -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" -delete

我的许可是root。

当我使用down -delete运行此命令行时,我会收到一个文件列表。但我无法使用此命令删除文件。

有什么问题吗?

3 个答案:

答案 0 :(得分:2)

你可以试试这个;

 find /home/  -type f \( -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*"  -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \)  -delete

你需要用括号括起多个名字,如上所述;

  

"建议您将文件扩展名括在括号中,   并且还可以在命令中使用\(反斜杠)转义字符。"

答案 1 :(得分:1)

-delete操作仅在某些find版本中可用(例如GNU find)。它是由BSD OS引入的。来自GNU findutils page

  

“删除”行动是由BSD系列操作系统引入的。

您可以使用更具可移植性的-exec操作:

find /home/ -depth -type f \( -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*"  -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -exec rm -f {} \;

修改

请注意,要对所有-delete表达式应用-iname操作,您必须使用转义括号对它们进行分组:

find /home/ -depth -type f \( -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*"  -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -delete

答案 2 :(得分:0)

您可以使用:

find /home/ -depth -type f -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*"  -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" -exec rm -f {} \;