[英]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.