🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
![](http://om4h63cja.bkt.clouddn.com/17-6-6/34873462.jpg) 这个命令主要用来删除文件和目录。 ### extglob shell 为了使用它们,需要像下面一样打开 extglob shell 选项: ~~~ shopt -s extglob ~~~ 输入以下命令,删除一个目录下除了 filename 之外的所有文件 ~~~ $ rm -v !(filename) $ rm -v !(filename1|filename2) ~~~ 下面的例子显示如何通过交互模式删除除了 .zip*或者*.odt 之外的所有文件 ~~~ $ rm -i !(*.zip) $ rm -v !(*.zip|*.odt) ~~~ 一旦你已经执行了所有需要的命令,你还可以使用如下的方式关闭 extglob shell 选项。 $ shopt -u extglob ### 使用 Linux 下的 find 命令删除文件 在这种方法下,我们可以只使用 find 命令[1]的适当的选项或者采用管道配合 xargs 命令,如下所示: ~~~ $ find /directory/ -type f -not -name 'PATTERN' -delete $ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm {} $ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm [options] {} ~~~ 下面的命令将会删除当前目录下除了 .gz 之外的所有文件 ~~~ $ find . -type f -not -name '*.gz' -delete ~~~ 使用管道和 xargs,你可以通过如下的方式修改上面的例子: ~~~ $ find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {} ~~~ 让我们看一个额外的例子,下面的命令行将会删除掉当前目录下除了 .gz、 .odt 和 .jpg 之外的所有文件: ~~~ $ find . -type f -not \(-name '*gz' -or -name '*odt' -or -name '*.jpg' \) -delete ~~~