【Linux】【rm】多个文件
在 CentOS Linux release 7.3.1611 (Core) 中,可以通过上文中的第一种方法进行删除。
在 Red Hat Enterprise Linux Server release 5.6 (Tikanga) 中则提示如下异常:
|
1 2 3 |
[oracle@sbdb trace]$ rm -rf !(alert_SBDB.log) -bash: !: event not found [oracle@sbdb trace]$ |
原因是在当前的shell环境中,不支持正则表达式(准确的说,bash默认识别正则表达式的开关是off的)
|
1 2 3 |
[oracle@sbdb trace]$ shopt extglob extglob off [oracle@sbdb trace]$ |
将其打开即可,如下:
shopt -s extglob #打开bash识别正则
shopt -u extglob #关闭bash识别正则
|
1 2 3 4 |
[oracle@sbdb trace]$ shopt -s extglob [oracle@sbdb trace]$ shopt extglob extglob on [oracle@sbdb trace]$ |
验证利用正则删除文件
|
1 2 3 4 5 6 |
[oracle@sbdb trace]$ ls alert_SBDB.log SBDB_rfs_4895.trc SBDB_rfs_4895.trm [oracle@sbdb trace]$ rm -rf !(alert_SBDB.log) [oracle@sbdb trace]$ ls alert_SBDB.log [oracle@sbdb trace]$ |
小结:
此方法虽然好用,但是rm -rf风险极高,特别是在这个场景下,因为,一旦括号中的名字书写错误,则会将该目录下所有文件及目录全部删除。
注意:括号中的名字,要么粘贴,要么就别用这种方式。
另:在linux命令行,输入shopt可以看