linux shell删除命令

来源:互联网 发布:程序员有时间玩游戏吗 编辑:程序博客网 时间:2024/04/30 06:10

Linux反选删除文件

1.#shopt -s extglob (打开extglob扩展通配符模式)
#rm -fr !(file1)
如果是多个要排除的,可以这样:
rm -rf !(file1|file2)
这里写图片描述

2.#find ./test/ | grep -v keep | xargs rm #删除当前test文件夹中keep文件之外的所有文件
这里写图片描述

3.#find ./ -name ‘[^k][^e][^e][^p]*’ | xargs rm -rf
这里写图片描述
当排除指定文件名的文件时,建议用第二种,另外,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够。

4.find ./ -name ‘[^k][^e][^e][^p]*’ -exec rm -rf {} \; 也是删除keep*以外的文件,但效率没有第3种方法高,因为在删除时-exec会启动多个进程来删除多个文件,而 xargs只启动一个进程 rm进程来处理。
(1); (分号)表示command命令参数的结束,特别强调,对于不同的系统,直接使用分号可能会有不同的意义, 所以使用转义符/在分号前明确说明。
(2){}表示文件名,也就是find前面处理过程中过滤出来的文件,用于command命令进行处理。

示例:
删除所有临时文件
find / -name “*.tmp” -exec rm -rf {} /;

查找10天前的dmp文件,并将文件copy到/root/tmp/目录:
find /root/py -mtime +10 -name “*.dmp” -exec cp {} /root/tmp/;

5.除了通过开extglob使!生效进行反向删除,还可以通过参数“v”进行反向删除。
(1)rm `ls | grep -v “^aa$”` 删除除aa以外的文件。
(2)rm `ls | grep -v”aa”` 删除除了包含字符串aa之外的所有文件。

0 0
原创粉丝点击