分页: 1 / 1

为什么是这样的?请指点

发表于 : 2012-12-19 12:01
youwang
一、我想删除*.txt以外的文件。
cook@linux-ir2d:~/downloads> rm -rf *.!(txt)
bash: !: event not found
cook@linux-ir2d:~/downloads> rm -rf *.^[txt]
cook@linux-ir2d:~/downloads> rm -rf *.[^t]xt
都不行。应该怎么用SHELL做到?
二、目录下有个vds2目录
cook@linux-ir2d:~/downloads> ls vd??
cook@linux-ir2d:~/downloads> ls vd*
cook@linux-ir2d:~/downloads> ls
b123 conf12.log conf.23.log conf25.log dddv3 gg13f ghtml g.html gssst g.txt gtxtt5 vds2 v.txt
cook@linux-ir2d:~/downloads>

看出问题了吧,为什么? *用不成?

Re: 为什么是这样的?请指点

发表于 : 2012-12-19 12:21
Strange
find -not -name "*.txt" -a -type f | xargs rm -f
ls -d vd*

Re: 为什么是这样的?请指点

发表于 : 2012-12-22 0:44
mark1991
youwang 写了:一、我想删除*.txt以外的文件。
cook@linux-ir2d:~/downloads> rm -rf *.!(txt)
bash: !: event not found
cook@linux-ir2d:~/downloads> rm -rf *.^[txt]
cook@linux-ir2d:~/downloads> rm -rf *.[^t]xt
都不行。应该怎么用SHELL做到?
二、目录下有个vds2目录
cook@linux-ir2d:~/downloads> ls vd??
cook@linux-ir2d:~/downloads> ls vd*
cook@linux-ir2d:~/downloads> ls
b123 conf12.log conf.23.log conf25.log dddv3 gg13f ghtml g.html gssst g.txt gtxtt5 vds2 v.txt
cook@linux-ir2d:~/downloads>

看出问题了吧,为什么? *用不成?
第二个问题,为什么我这里似乎可以用?

Re: 为什么是这样的?请指点

发表于 : 2012-12-22 1:02
枫叶饭团
第一个用find,第二个我这没问题

Re: 为什么是这样的?请指点

发表于 : 2012-12-22 22:41
aerofox
第一个问题,设置extglob选项:

代码: 全选

shopt -s extglob
然后就可以

代码: 全选

rm !(*.txt)
设置选项的命令可以放到 ~/.bashrc 中

第二个问题,用

代码: 全选

ls -l --quoting-style=shell
看看到底有些什么文件。