这是我的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
运行此命令行时,我会收到一个文件列表。但我无法使用此命令删除文件。
有什么问题吗?
答案 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 {} \;