繁体   English   中英

使用 Linux 上的 find 命令查找和删除带空格的文件

[英]find and remove files with space using find command on Linux

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

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

但这对我不起作用,没有任何反应,我想我发现了问题,目录名称中的空格!

我以前在以前版本的 Ubuntu 上做了这个技巧来删除我的垃圾文件,但现在在最新版本的 Ubuntu 上我不能。

我的命令有错误吗?

我会这样做:

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

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

只是把这个扔出去

find . -name "*.pyc" -delete

我不确定你为什么使用while

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

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

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

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

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

寻找。 -iname "*.db"

正在返回任何东西。

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

寻找。 -iname "*.db" | xargs rm -rfv

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM