外行求 find 写法

2019 年 2 月 16 日
 dazkarieh

最近在整理硬盘(水果机),想删除 /downloads 目录下所有 mht 类型的文件。

无奈神秘代码太多,不能一一删除,所以在终端试了下 find 命令

find . -name "*.mht"  | xargs rm -f 

发现还有漏网之鱼。

./1118 -1141/{最新国产日韩欧美新片合集发布}.mht
./1118 -1141/_1024 核工厂最新地址.mht
./1119 -2318-01-10/{最新国产日韩欧美新片合集发布}.mht
./1119 -2318-01-10/_1024 核工厂最新地址.mht
./1109 -0680/{最新国产日韩欧美新片合集发布}.mht
./1109 -0680/_1024 核工厂最新地址.mht
./1117 -0413/{最新国产日韩欧美新片合集发布}.mht
./1117 -0413/_1024 核工厂最新地址.mht    

*.mht 难道不能包含所有 mht 类型的文件吗,求正解 o(╯□╰)o

4830 次点击
所在节点    Linux
21 条回复
Valyrian
2019 年 2 月 16 日
双引号换成单引号
Valyrian
2019 年 2 月 16 日
当我没说- -
dazkarieh
2019 年 2 月 16 日
@Valyrian 改了,结果还是一样
sdijeenx
2019 年 2 月 16 日
find . -name *.mht -exec rm -rvf {} \;
aocif23
2019 年 2 月 16 日
先用 find . -name "*.mht" 看看能匹配到不。

我一般这样用的。
find . -name "*.mht" | xargs -i rm -rf {}
aocif23
2019 年 2 月 16 日
另外,老歌借一部说话 [滑稽]
zbinlin
2019 年 2 月 16 日
find . -name '*.mht' -delete

find . -name '*.mht' -exec rm '{}' \;

find . -name '*.mht' -print0 | xargs -0 rm -f
luozic
2019 年 2 月 16 日
最好先输出到一个文本里面,检查一下之后直接按 list 删掉
sdijeenx
2019 年 2 月 16 日
@luozic 有道理,可以在 rm 后边加个-i 输入 y 才会删除文件像这样:
find . -name *.mht -exec rm -i {} \;
dazkarieh
2019 年 2 月 16 日
@sdijeenx 谢谢老哥,一句话搞定。
@zbinlin 大哥你牛逼,玩出花式来了
@aocif23 试了这位老哥的,显示
```bash
xargs: illegal option -- i
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
[-L number] [-n number [-x]] [-P maxprocs] [-s size]
[utility [argument ...]]
```
hguandl
2019 年 2 月 16 日
推荐楼上的那个 print0 写法,能解决一些奇怪字符造成的问题。而且 xargs -0 就是专门和 find -print0 对接的参数,非常适合搭配使用。
misaka19000
2019 年 2 月 16 日
用 python 写会简单很多
ipwx
2019 年 2 月 16 日
我最近喜欢这么用:

find . -name "*.xxx" -exec bash -c '
FN="{}"
... 然后你就可以随便怎么写了
' \;
quinoa42
2019 年 2 月 17 日
没删成是因为空格在 expand 之后被当成 arg 分隔符了吧
shuangyeying
2019 年 2 月 17 日
学了一招,之前都是设置成只搜索当前文件夹,然后搜索后缀名,然后直接删除。
richzhu
2019 年 2 月 17 日
为什么要 find 你这个需求 直接 rm -rf *.mht
billgreen1
2019 年 2 月 17 日
@richzhu *.mht 会被扩展成具体的文件名,文件数量过多后 rm 就搞不定了,这个数量具体是多少得查查。
sparkssssssss
2019 年 2 月 17 日
@richzhu 多级目录
sparkssssssss
2019 年 2 月 17 日
有大括号,估计 rm 报错了?
用 inode 删
richzhu
2019 年 2 月 17 日
@billgreen1 他不是就要删除 mht 扩展名嘛,不根据需求来嘛😂 他能有几个文件……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/535686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX