在bash中,我怎么说,如果一个文件没有以“* _01-1.html”结尾删除它?

时间:2011-01-19 19:47:54

标签: bash shell

谷歌没有帮助我,我无法弄清楚语法。

for file in *_01.html
  do 
    <I want to say if a file does NOT end in *_01.html OR *.pdf then delete it>
  done

所以在一个目录中,我试图让它循环遍历每个文件,如果该文件不以whatever_01.html OR whatever.pdf结束,则删除它。

2 个答案:

答案 0 :(得分:4)

在bash中:

shopt -s extglob
rm !(*_01.html|*.pdf)

答案 1 :(得分:1)

如果您想以递归方式执行此操作(例如,在所有子目录中),请执行以下操作:

find . -type f ! -name '*_01.html' -exec rm {} \; 

find是一个默认搜索子目录中文件的命令。在这里你说:“请找到以'_01.html'结尾的实体,这些实体不是dirs,并将每个条目作为'rm'命令的参数传递”。