linux下删除指定文件外的其他文件详解
(2016-07-31 00:38:14)
标签:
啄木鸟linux删除文件指定文件其他文件 |
分类: Linux学习笔记 |
删除指定文件外的其他文件有以下方法:
其一:复制需要保留的文件到其他文件夹,然后将该目录删除。然后再将需要保留的文件给移回来,此方法较为繁琐。
其二:直接在当前文件夹中进行,
#:shopt -s extglob
(打开extglob模式)
其一:复制需要保留的文件到其他文件夹,然后将该目录删除。然后再将需要保留的文件给移回来,此方法较为繁琐。
其二:直接在当前文件夹中进行,
#:shopt -s extglob
#:rm
-rf !(keep) #删除keep文件之外的所有文件
#:rm
-rf !(keep1|keep2) #删除keep1和keep2文件之外的所有文件
其三:在当前文件夹中使用grep和xargs来处理文件名
#:ls |grep -v keep |xargs rm
#删除keep之外的所有文件
解释:-v参数决定了匹配之外的结果。即keep之外的所有文件名
xargs用来从标准输入获得参数,并且传递给后面的命令,此处命令为rm
其四:使用find命令,替代ls,改进法三,从而得到所需结果
#:find /tmp/test.txt |grep -v keep |xargs rm
#删除当前文件夹中keep之外的所有文件
解释:用grep而不用find -name选取名字,因为find选取名字是比较麻烦,对正则表达支持不够,无法排除指定文件名
其五:直接使用find命令删除其他文件,
#:find / -name "[^k][^e][^e][^p]" -exec rm -rf {} \; #删除keep以外的其他文件
#:find / -name "[^k][^e][^e][^p]" |xargs rm -rf
#删除keep以外的其他文件(推荐使用)
解释:第二行的代码效率高与第一行,原因在于删除到个文件时,-exec会启动多个进程来处理。而xargs会启动一个rm进程来处理
关于关于xargs的一些说明:
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,
而日常工作中有有这个必要,所以就有了xargs命令,
例如:
这个命令是错误的
find /sbin -perm +700 |ls -l
这样才是正确的
find /sbin -perm +700 |xargs ls -l
关于关于-exex的一些说明
-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
{} 花括号代表前面find查找出来的文件名。
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。
建议在真正执行rm命令 删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一
个\,最后是一个分号。
为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文 件名 。
例如:
#:find. -type f -mtime +14 -exec rm {} \;
#在目录中查找更改时间在14天一天的文件,并删除
在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
相关截图有待上传,文章根据蓝色角落改写
其三:在当前文件夹中使用grep和xargs来处理文件名
#:ls |grep -v keep |xargs rm
解释:-v参数决定了匹配之外的结果。即keep之外的所有文件名
xargs用来从标准输入获得参数,并且传递给后面的命令,此处命令为rm
其四:使用find命令,替代ls,改进法三,从而得到所需结果
#:find /tmp/test.txt |grep -v keep |xargs rm
解释:用grep而不用find -name选取名字,因为find选取名字是比较麻烦,对正则表达支持不够,无法排除指定文件名
其五:直接使用find命令删除其他文件,
#:find / -name "[^k][^e][^e][^p]" -exec rm -rf {} \;
#:find / -name "[^k][^e][^e][^p]" |xargs rm -rf
解释:第二行的代码效率高与第一行,原因在于删除到个文件时,-exec会启动多个进程来处理。而xargs会启动一个rm进程来处理
关于关于xargs的一些说明:
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,
而日常工作中有有这个必要,所以就有了xargs命令,
例如:
这个命令是错误的
find /sbin -perm +700 |ls -l
这样才是正确的
find /sbin -perm +700 |xargs ls -l
关于关于-exex的一些说明
-exec
{}
建议在真正执行rm命令 删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。
为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文 件名
例如:
#:find
在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
相关截图有待上传,文章根据蓝色角落改写
前一篇:grep正则表取反的问题解决详细
后一篇:linux下,压缩工具的使用详解

加载中…