Warm tip: This article is reproduced from serverfault.com, please click

bash-为什么这两个rm命令产生不同的输出?

(bash - Why do these two rm commands produce different outputs?)

发布于 2020-11-28 04:48:45

在第一个命令中,te不会删除根目录(即)在第二个命令中,我想添加一个例外,即不删除类型.log最终导致破坏源目录的文件。为什么这些命令有所不同?在不删除原始目录的情况下添加异常的正确方法是什么?

user:~/mnt/test$ rm -rf te/*
user:~/mnt/test$ ls
no.tar  te
user:~/mnt/test$ rm -rf te/* !(*.log)
user:~/mnt/test$ ls
no.tar
Questioner
knowads
Viewed
11
oguz ismail 2020-11-28 17:22:11

extglob模式 !(*.log)相匹配的目录te也如同它的名字不是结束.log要删除te除带有扩展名的文件以外的每个文件log,你应该执行以下操作:

shopt -s dotglob    # match hidden files too
echo rm -rf te/!(*.log)

echo如果对输出感到满意,请删除