You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何编写ls命令列出abc开头的txt文件并排除含_DEL_的文件?

没问题,我来帮你搞定这个ls命令的写法!这里有几种实用的方案,你可以根据自己的shell环境选择:

方法1:用bash扩展通配符(最直接)

如果用的是bash shell,我们可以借助它的**扩展通配符(extglob)**来实现一步筛选。先确认这个功能开启(大部分现代bash默认已经开了,要是没开的话,临时执行shopt -s extglob就能启用),然后直接运行:

ls abc!(*_DEL_*).txt

这里的!(*_DEL_*)是关键——它表示匹配**不包含_DEL_**的任意字符,刚好帮你排除掉那些带_DEL_的文件,完美符合你的需求。

方法2:结合ls和grep过滤(通用所有shell)

要是你用的不是bash,或者不想折腾shell扩展,用管道+grep的组合更通用:

ls abc*.txt | grep -v "_DEL_"

-v参数是grep的反向匹配功能,意思是“排除包含指定字符串的行”,这样就把带_DEL_的文件名从ls的输出里过滤掉了。

方法3:用find命令(复杂场景更靠谱)

如果你的文件很多,或者需要递归查找子目录里的文件,find命令会更灵活:

find . -maxdepth 1 -type f -name "abc*.txt" ! -name "*_DEL_*.txt"

解释下参数:

  • -maxdepth 1:只查找当前目录(如果要递归去掉这个参数就行)
  • -type f:只找普通文件,避免把同名目录也列出来
  • -name "abc*.txt":匹配以abc开头的txt文件
  • ! -name "*_DEL_*.txt":排除文件名里带_DEL_的文件

另外提个小细节:如果你的文件名里有空格,用ls | grep可能会出现排版问题,这时候优先用方法1或者方法3,或者用printf "%s\n" abc!(*_DEL_*).txt来代替ls,输出更清晰。

内容的提问来源于stack exchange,提问作者Rao

火山引擎 最新活动