Linux反选删除文件
最简单的方法是
# shopt -s extglob (打开extglob模式)
# rm -fr !(file1)
如果是多个要排除的,可以这样:
# rm -rf !(file1|file2)
Linuxrm摘要删除指定文件以外的其他文件方法
一、Linux下删除文件和文件夹常用命令如下:删除文件:rmfile 删除文件夹:rm-rfdir 需要注意的是,rmdir只能够删除空文件夹。二、删除制定文件(夹)以外的所有文件? 1.方法1,比较麻烦的方法是: 将要保留的文件复制到其它文件夹中,然后删除目录,然后移动需要保留的移动回来。mvkeep../#保留文件(夹)keep rm-rf*##删除当前文件夹中的所有文件mv../keep./##把原来的东西移回来 2.方法2需要在当前文件夹中进行: rm-rf!(keep)#删除keep所有文件外的文件 rm-rf!(keep1|keep2)#删除keep1和keep2文件之外的所有文件 3、方法3,当前文件夹结合使用grep和xargs处理文件名:ls|grep-vkeep|xargsrm#删除keep所有文件外的文件 说明:ls首先获得所有当前文件和文件夹的名称,grep-vkeep,进行grep正则匹配搜索keep,-v参数决定了除匹配外的结果,即keep所有以外的文件名,然后xargs用于从标准输入获得参数并将其传递给以下命令。这里使用的命令是rm,然后由rm删除之前选择的文件。 好处:使用grep用正则表达式匹配文件名称,可以一次保留多个文件,以便更准确地处理。 4.使用方法4find命令代替ls,改进方法3可以处理制定文件夹的文件: find./test/|grep-vkeep|xargsrm#删除当前test文件夹中keep所有文件外的文件 说明,用grep而不用find-name因为find选名比较麻烦,对正则表达式支持不够,不能排除指定文件名。 5.直接使用方法5find命令删除其他文件: find./-name'[^k][^e][^e][^p]*'-execrm-rf{}\;#删除keep其他文件。find./-name'[^k][^e][^e][^p]*'|xargsrm-rf#删除keep其他文件。推荐! 注:上述第二行的代码效率较高,因为删除多个文件时-exec将启动多个过程进行处理,xargs会启动一个rm处理过程。 关于find执行命令的效率和借用xargs请参考启动命令效率的比较:http://www.linuxsir.org/main/?q=node/137 Linux文件搜索命令find,xargs详述http://www.linuxsir.org/main/?q=node/137本文转载:http://blog.sina.com.cn/s/blog_70ffb5c501011rrk.html
rm删除指定文件剩余的所有文件(rm反向删除)
zhou@zhou:~/LinuxC/file/test$ ls 123sdfwe88888888aabbagghddammm 23aaaaaaaaabcasdgllllllllwwwww zhou@zhou:~/LinuxC/file/test$ 然后我想删除包含字符的字符串aa所有外部文件,也就是说,想留下aabb,aaaaaaaa,这两个文件,其他的全部删除 以下是我的命令: zhou@zhou:~/LinuxC/file/test$ zhou@zhou:~/LinuxC/file/test$ ls aaaaaaaaaabb zhou@zhou:~/LinuxC/file/test$ 所以,成功了。 简单解释一下命令:rm 删除后面指定的文件 `ls | grep -v "aa" ` 记得外面是反引号(键盘数字1的左侧),
ls:查看当使用前目录中的所有文件grep过滤命令grep -v "aa" 找出字符串中没有的字符aa”的。 整体顺序:列出文件名不带aa串文件,然后删除它们。OK。 其实说起来简单,当时我也做了很长时间,因为以前接触不多grep,所以一开始我想到的是用它,但是在做的过程中突然发现了grep用好东西。 上述命令使删除带有aa如果我只想留下文件aa呢?很简单 zhou@zhou:~/LinuxC/file/test$ 好了,就这么多。希望以后能用到这个有用的命令
转自:http://blog.sina.com.cn/s/blog_67e34ceb01014930.html
linux 删除其他文件
http://zhidao.baidu.com/link?url=uvHfrb3kSnM_8p5ILhZyc39U0h3md-Ncrm3iaygeYTLU-zjthNBlqO674VulVGTnPiNcl2nj7wo5vn08N4481_
求教 linux centos我想删除目录中的文件名"*20100330*"如何删除这样的规则文件? 假设目录名称为myTest使用以下命令作为当前目录的下一级目录:
cd ./myTest && rm `ls | grep -v '20100330'` && cd .. 进入myTest删除文件后,将目录返回当前目录。 grep的-v参数表示反向选择。 一般使用rm删除文件时会有确认提示。如果不确认,可以直接强制删除rm的-f参数。
其他1条回答
find ./ -type f \! -name "*20100330*" -exec rm -rf {} \;
如何反向选择文件并删除文件
http://bbs.csdn.net/topics/390077765
案例:我想删除一个文件夹除了abc文件如何写所有以外的文件和命令?(linux下)
find.-maxdepth1-typef-not-name'abc'-execrm'{}'&nsp;';'
ls | grep -v abc | xargs -i rm -rf {}
rm -f `ls | grep -v abc` 如果文件很多的情况下,不要用这种方法…… 要用2楼的方法……
mv abc /tmp rm * mv /tmp/abc .
反向显示文件
使用ls命令仅仅显示当前目录不包括.的文件. ls加grep过滤的方式:ls -al | grep -v '\.'(ls --ignore=.* -al也可实现)。 在打开extglob模式下(缺省是打开的),ls也可以实现,而且更加灵活. shopt -u extglob #关闭 shopt -s extglob #打开 ls -al !(*.*) ls -al -d !(*.*)