递归删除solaris中除特定文件外的所有文件+文件夹

阿斯尔

下面的命令递归地删除104.tar文件/tmp/CURRENT下的所有文件。

find /tmp/CURRENT/ -type f ! -name '104.tar' -exec rm -rf {} +

但是,它不会递归删除/tmp/CURRENT.

如果我提供-type d它可能会有所帮助,但我不想要单独的命令。我的要求是使用我在下面尝试过的相同命令删除文件和文件夹,但没有帮助。

find /tmp/CURRENT/ -type f -type d ! -name '104.tar' -exec rm -rf {} +

如果我根本不指定-type选项,则该命令将删除整个/tmp/CURRENT文件夹而不是其内容!

注意:我的操作系统是 Sun Solaris Sparc。

你能建议吗?

大学教师

当你用-type f你告诉find考虑文件而已。所以这不会删除目录是正常的。为避免删除/tmp/CURRENT/自身,您可以尝试一些操作:

  1. 如果你的find支持-mindepth(GNU find——Linux系统上的默认设置——有这个,我不知道其他find版本可能支持它),你可以告诉它只查看至少一个级别的东西:

    find /tmp/CURRENT/  ! -name '104.tar' -mindepth 1 
    
  2. 使用第二个!运算符将其排除:

    find /tmp/CURRENT/ ! -path /tmp/CURRENT/ ! -name '104.tar' 
    
  3. 只需使用-path, 并查找/tmp/CURRENT以至少一个字符开头并后跟至少一个字符的路径

    find /tmp/CURRENT/ -path '/tmp/CURRENT/?*' ! -name '104.tar' 
    

在所有三种情况下,您都可以-exec rm -r {} +在命令末尾添加以删除匹配项。

但是,请注意,这些命令将删除除特定文件之外的所有内容/tmp/CURRENT/104.tar因此,如果您在子目录中/tmp/CURRENT/dir1/104.tar或任何其他文件104.tar,这些文件将被删除。如果这不是您想要的,那么请编辑您的问题以澄清。

当然,如果您只想删除/tmp/CURRENTexcept 中的所有内容/tmp/CURRENT/104.tar,则根本不需要find你可以在 bash 中运行它:

shopt -s extglob
rm -r /tmp/CURRENT/!(104.tar)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

文件夹中除一个命名文件夹外的所有文件夹的glob

删除Python中除最新文件夹以外的所有文件夹

删除文件夹中Google脚本中除x个最近发送的文件外的所有文件

Linux:如何删除文件夹中除具有特定名称的文件以外的所有文件?

除文件外移动文件夹

删除文件夹中除文件X,Y和Z以外的所有文件

删除除X个最近的文件夹外的所有文件夹

递归测试文件夹中的所有flac文件

暂存除一个文件夹外的所有文件夹

删除文件夹中的所有文件和文件夹,以结尾的文件和文件夹为准

使用批处理删除文件夹中除列表中的文件以外的所有文件

递归搜索子文件夹并删除6个月以上的子文件夹中的所有文件

递归地从目录中删除除N个文件外的所有文件

如何从centos中的特定文件夹删除除一个命名目录外的所有文件和目录

递归删除特定文件夹

删除文件夹中除具有某些前缀的文件外的所有文件

删除文件夹中除具有特定名称的文件夹外的所有文件夹

自动复制除该文件夹外的文件夹中的所有文件

如何删除除父文件夹下的某些特定文件夹以外的所有文件

如何删除文件夹中除最新X子文件夹以外的所有子文件夹?

批处理文件,删除目录中除最新文件夹外的所有文件夹

递归清除其中没有文件的文件夹中的所有文件夹和子文件夹

删除目录中除两个特定文件夹外的所有内容

从递归文件夹中删除所有zip文件

递归删除除一个子文件夹之外的所有子文件夹

如何删除除某些特定文件(目录中的许多文件夹)以外的所有文件?通过 bash 脚本

(批量)如何递归删除目录中除以.开头的文件/文件夹之外的所有文件/文件夹?

如何删除除某些文件夹之外的所有文件夹

powershell 删除除最后三个文件夹之外的所有文件夹