【发布时间】:2019-11-21 19:49:35
【问题描述】:
我想删除文件夹中的所有文件和目录,例如“A”。但除了该文件夹中的一个文件说.keep。我尝试了以下命令。
find A ! -name '.keep' -type f -exec rm -f {} +
但上面的命令也会删除文件夹 A。我不希望这样。有几个与此相关的答案。但他们都提到进入那个目录。我想在命令中提及该目录,而无需 cd-e 进入该目录。
【问题讨论】:
-
find A -mindepth 1 ! -name '.keep' -delete -
@ymonad 会递归工作吗?
-
这取决于递归的含义。它删除
A/hooA/B/hooA/A/ (if empty),不删除A,A/.keepA/B/.keep。如果不是你想要的,你应该把你想删除的和你想保留的更准确地写出来。 -
顺便说一下,您的命令不应该删除文件夹 A,因为您指定了
-type f。你的命令真的会删除它吗? -
@ymonad。你的命令有效