我想删除文件夹中的所有文件和目录,比如“A”。但除了该文件夹中的一个文件说.keep。我尝试了以下命令。
找到 !-name '.keep' -type f -exec rm -f {} +
但上面的命令也会删除文件夹 A。我不希望这样。有几个与此相关的答案。但他们都提到进入那个目录。我想在命令中提及该目录,而无需 cd-e 进入该目录。
我想删除文件夹中的所有文件和目录,比如“A”。但除了该文件夹中的一个文件说.keep。我尝试了以下命令。
找到 !-name '.keep' -type f -exec rm -f {} +
但上面的命令也会删除文件夹 A。我不希望这样。有几个与此相关的答案。但他们都提到进入那个目录。我想在命令中提及该目录,而无需 cd-e 进入该目录。
find A ! -path A/.keep -a ! -path A -delete
简而言之,您找到要保留的文件,然后在
-o
(“或”的缩写)将获得所有“其他”不匹配的文件之后,您可以做任何您需要的事情。另一个有用的参数是
-mindepth 1
,它可以让您轻松跳过顶层(级别 0)。这是一个示例,像这样启动树:
您需要擦除除“保留”文件之外的所有文件的命令可以是:
如您所见,
keep1
并且keep2
不在传递给ls
命令的参数列表中。随意ls -gGd
替换rm -vf
:)如果您有更多要求,可以调整括号中的参数。