linux命令集:删除指定名称以外的文件

在一个目录下,想保留某几个文件,删除其它所有文件。应该怎么做呢?

比如要保留目录下后缀为 .keep的文件,删除其它的:


方法一:可以通过 grep -v 和 xargs 来实现。

命令如下:

ls | grep -v ".*\.keep" | xargs rm

其中:

grep 的-v选项作用是:

Invert the sense of matching, to select non-matching lines.  

对匹配的逻辑结果求反,即选择不匹配后边正则式的行。

xargs的作用是:分别将标准输入的每一行变成后面命令的参数。

这种方法的缺点是:只支持正则式,不能使用通配符。错误使用正则式可能导致文件被误删除。




方法二:使用临时目录

创建如下一个shell文件,命名为:rmexcept.sh,假设路径为: ~/myshell/

mkdir _to_keep_tmp_dir_
mv $* _to_keep_tmp_dir_
ls | grep -v "^_to_keep_tmp_dir_$" | xargs rm -rf
mv _to_keep_tmp_dir_/* .
rmdir _to_keep_tmp_dir_

在shell环境变量配置中,设置:

alias rmexcept=~/myshell/rmexcept.sh

以后就可以用rmexcept命令来删除指定名称以外的文件,其参数可以有通配符。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值