Linux下删除某个文件之外的其他所有文件

在windows下要删除一个文件夹下除某个文件之外的其他所有文件很简单,选择这个文件,再反选即可。Linux下可能很多人不知道如何实现这种效果,这里分享2种方法:

1 使用xargs

ls | grep -v xxx | xargs rm -r

使用时将xxx替换成要保留的文件名即可。

如果有相似的文件名,可以使用正则表达式匹配完整的文件名,如:

有两个相似的文件名33和331,此时要保留33删除331就需要全匹配
ls | grep -v "^33$" | xargs rm -r

其中的^表示匹配开头位置,$表示匹配结束位置。

2 rm -rf !()

rm -rf !(xxx)

此命令表示删除xxx之外的所有其他文件(包括文件夹)。
注意,-f参数表示此命令删除时没有提示,删除前请务必确保要删除的文件是不再需要的。

此命令在低版本的bash下可能会不生效(实测4.2版本可以正常使用),如果不生效请参考方法1。

相关推荐
小心草里有鬼4 分钟前
VMware虚拟机扩容
linux·后端·centos·vim
姜行运31 分钟前
【Linux】基础指令2
android·linux·服务器
比奇堡派星星1 小时前
sed命令
linux·运维·服务器·开发语言
程序员zgh1 小时前
Linux 内存管理单元 MMU
linux·运维·服务器·c语言·开发语言·c++
比奇堡派星星1 小时前
linux基础命令
运维
LaoWaiHang1 小时前
Linux基础知识15:修改文件(文件夹)的权限
linux
Trouvaille ~1 小时前
【Linux】TCP协议基础与连接管理详解:从三次握手到四次挥手
linux·运维·服务器·网络·c++·网络协议·tcp/ip
蓝天居士2 小时前
Linux串口接收0x0D莫名转换为0x0A问题的根本原因分析
linux
UP_Continue2 小时前
Linux--动静态库
linux·运维·服务器
CheungChunChiu2 小时前
Linux 音频系统全景解析:PipeWire、PulseAudio 与 ALSA 的层次关系
linux·运维·服务器·audio