批量查找&使用find命令问题删除linux上的文件

时间:2011-06-05 09:21:49

标签: linux shell command-line ubuntu

大家好 我正在尝试使用ubuntu中的 find 命令删除Windows分区中的所有thumbs.db文件:

find . -iname "*.db"|while read junk;do rm -rfv $junk;done

但它不适合我,没有任何反应! 我之前在Ubuntu的早期版本上删除了我的垃圾文件,但是现在在最新版本的Ubuntu上我不能。 我的命令中有没有错误?

5 个答案:

答案 0 :(得分:38)

我这样做:

find . -iname 'thumbs.db' -exec rm -rfv {} +

这样,即使您的目录名称中包含空格,它仍然有效。

答案 1 :(得分:30)

只是把它扔出去

find . -name "*.pyc" -delete

答案 2 :(得分:6)

我不确定您使用while的原因。

find . -iname 'thumbs.db' -exec rm -rfv {} \;

...应该足够了(只删除你想要的文件,而不是任何可能存在的BDB文件)。

答案 3 :(得分:1)

代码看起来不错,适用于arch和debian。也许没有匹配“* .db”的文件?

作为旁注:删除所有带有后缀“.db”的文件可能不是一个好主意,因为您可能会意外删除除“Thumbs.db”之外的其他文件

答案 4 :(得分:0)

首先检查命令的第一部分,即:

  找到。 -iname“* .db”

正在返回任何内容。

如果有,那么您可以按如下方式使用xargs来完成任务:

  找到。 -iname“* .db”| xargs rm -rfv

更新:从评论中,这是不安全的,特别是如果目录/文件名中有空格。您需要使用-print0 / xargs -0来确保安全。