2016-11-07 56 views
1

这是我的shell命令行:这一发现Linux命令不能删除文件

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 

我的权限是根。

当我运行这个命令行withdown -delete时,我收到一个文件列表。但是我不能用这个命令删除文件。

有什么问题吗?

+0

'-delete'标志在所有版本的'find'中都不可用。 – SLePort

回答

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 {} \; 
1

-delete动作只可在一些find版本(如GNU find)。它是由BSD操作系统推出的。从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 {} \; 

编辑:

请注意,以应用在所有-iname表达式-delete操作,必须将它们分组使用转义括号:

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 
+0

我试过了,没有任何变化。可能是返回字符串有问题或别的东西。 当我运行comman时:find/home/-depth -type f -iname“* php.jpg *”-delete。它的工作原理,但是当我运行带有多个名称的命令。它不起作用。 – Diego

+0

查看我对'-iname'表达式分组的编辑。 – SLePort

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 

您需要使用括号括住多个名称;

“建议您附上的文件扩展名的支架, 也使用\(反斜杠)转义字符作为命令。”

相关问题