在一个命令中删除 var/www/html 下 dir0/dir1 的所有实例下除一个 inode 之外的所有 inode

在一个命令中删除 var/www/html 下 dir0/dir1 的所有实例下除一个 inode 之外的所有 inode

我有该目录var/www/html,在它下面有一些网站目录(比如大约 5 个)。

所有 5 个网站目录都有一个内部路径dir0/dir1

如何在一个命令中批量删除该路径内的所有 inode(除了名为 的 inode 之外he_IL.mo)?

我询问一个命令,因为我有以下 3 个有效命令块,但我想尽可能少地使用此命令:

(
find /var/www/html/*/dir0/dir1/ ! -name 'he_IL.mo' -type f -exec rm -f {} + 
find /var/www/html/*/dir0/dir1/ -type f -exec rm -d {} +
find /var/www/html/*/dir0/dir1/ -type f -exec rm -l {} + 
)
  • 如果我这样做*而不是f我得到“应该只包含一个字母”。
  • 如果我这样做i而不是f,我会得到一个“未知参数”。

答案1

使用一个命令的方法是-type从命令中删除 , 。然后我们得到:

find /var/www/html/*/dir0/dir1/ ! -name 'he_IL.mo' -exec rm -f {} + 

请注意,它也不会删除具有该名称的目录和软链接he_IL.mo,但如果可以的话,请使用它。

相关内容