在Linux或Unix上如何批量删除包含数字的文件
时间:2019-11-20 08:53:49 来源:igfitidea点击:
在linux中,如何删除文件名中包含特殊字符或数字的文件?
解决方案
bash支持使用通配符(globbing)来匹配文件命令。
注意,通配符模式不是正则表达式。
Bash Shell支持以下通配符:
*
: 匹配任何字符串*a*
: 匹配任何包含a的字符串*9*
: 匹配任何包含数字9的字符串*.[xy]
: 匹配任何以.x或.y结尾的字符串*[ab]*
: 匹配包含字符a或b的任何字符串*[42]*
: 匹配包含数字4或2的任何字符串?
: 匹配任何单个字符
linux bash 通过通配符删除文件示例
查看所有.txt文件:
$ ls *.txt
查看文件名只有1个字符的txt文件
$ ls ?.txt
查看以大写字母开头的txt文件:
$ ls [A-Z]*.txt
删除文件名中包含数字4或2的文件:
$ ls *[42]* $ rm -v *[42]*
bash shell的通配行为
使用shopt命令打开extglob:
$ shopt -s extglob
打开extglob以后:
复合模式可以使用以下一个或多个子模式组成:
?(pattern-list) 匹配给定模式的零次或一次 *(pattern-list) 匹配给定模式的零次或多次 +(pattern-list) 匹配给定模式的一次或多次 @(pattern-list) 匹配给定的模式1次 !(pattern-list) 匹配除给定模式之外的任何模式
匹配以foo或bar开头的所有mp4和mov文件:
$ ls +(foo|bar)*+(.mp4|.mov)
匹配除png以外的所有文件:
$ ls -l !(*.png)
删除非gif文件
$ rm -v !(*.gif)