You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash批量删除指定文件问题求助

Bash批量删除指定文件问题求助

嗨,这位新手朋友!我来帮你搞定这个批量删文件的小问题~

首先你碰到的核心问题很明确:你给通配符*套了双引号,导致Shell不会解析它,反而把带*的字符串当成了一个完整的文件名。比如你写的rm "red_dk*",Shell会傻乎乎地去找一个名叫red_dk*的文件,而不是所有以red_dk开头的文件——说不定你之前单独执行时没加引号才成功的?

不管怎样,正确的写法是去掉包裹通配符的引号,让Shell自动展开这些匹配规则:

#!/bin/bash

# 不带引号的通配符会被Shell自动解析成所有符合条件的文件名
rm red_dk* red_lt* *.gif

这样写之后,Shell会把red_dk*转换成所有以red_dk开头的文件,red_lt*转换成所有以red_lt开头的文件,*.gif转换成所有以.gif结尾的文件,rm就能准确删除这些目标文件了。

不过为了避免误删,强烈建议你先把rm换成echo预览一下要删除的文件列表,确认无误再执行删除:

echo red_dk* red_lt* *.gif

如果你的文件名里有空格、特殊字符(比如!、@这类),上面的方法可能会出问题,这时候用find命令会更稳妥:

#!/bin/bash

# 先切换到目标文件夹,避免路径错误
cd apples || exit

# 先预览要删除的文件,确认后把-print换成-delete即可
find . -type f \( -name "red_dk*" -o -name "red_lt*" -o -name "*.gif" \) -print

这里-type f表示只匹配文件(不包含文件夹),-o代表“或”的逻辑,用括号把条件括起来是为了保证逻辑顺序正确。

最后再啰嗦一句:批量删除操作一定要谨慎,预览是个能帮你避坑的好习惯哦~

备注:内容来源于stack exchange,提问作者denvercode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 09:09:40