我们有许多目录,每个目录包含 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 天前更新的文件。
我已经列出了那些包含较新文件的目录,但我找不到可以删除所有“其他”目录的“反向”命令。
使用 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
以找出未删除目录的原因。