删除仅包含旧文件的 Linux 目录

pk7*_*pk7 5 recursive files

我们有许多目录,每个目录包含 2 个文件,其中一个是隐藏文件。我们希望删除所有那些仅包含修改日期超过 180 天的文件的目录及其内容。因此,例如,如果我们有以下内容:

Dir1   Jan 1 2000
     File1A   Jan 1 2000
     File1B   Jan 1 2000
Dir2   Jan 1 2000
     File2A   Jan 1 2014
     File2B   Jan 1 2014
Dir3   Jan 1 2000
     File3A   Jan 1 2014
     File3B   Jan 1 2000
Run Code Online (Sandbox Code Playgroud)

我需要一个 Linux 命令,该命令将仅删除 Dir1 及其所有内容,包括隐藏文件。Dir2 和 Dir 3 将保持不变,因为每个都包含至少一个比 180 天前更新的文件。

我已经列出了那些包含较新文件的目录,但我找不到可以删除所有“其他”目录的“反向”命令​​。

Sté*_*las 6

使用 GNU 工具:

for d in Dir*; do
  find "$d" -mindepth 1 -mtime -180 -print -quit | grep -q . ||
    echo rm -rf "$d"
done
Run Code Online (Sandbox Code Playgroud)

echo满意时删除。删除-q以找出未删除目录的原因。