递归进入以*TEST*开头的目录,只保留最新的5个文件夹



这是我的目录结构。

./TEST1/automation
./TEST2_1/automation
./TEST3.4/automation
./general/automation

我只想在所有以TEST*/automation开头的目录下保留最新的5个子文件夹。

目前,我的脚本进入如下每个目录并执行命令:

./TEST1/automation
ls -dt */ | tail -n +5 | xargs rm -rf
./TEST2_1/automation
ls -dt */ | tail -n +5 | xargs rm -rf
./TEST3.4/automation
ls -dt */ | tail -n +5 | xargs rm -rf

每次我们添加一个以TEST开头的新文件夹时,我都必须手动更新脚本。

基本上,进入以TEST*/automation开头的所有目录,只保留最新的5个文件夹。

试试这个:

find -regex '.*/TEST.*/automation' -print0 |xargs -0 -I {} -n1 bash -c 'cd "{}"; ls -rt |  tail -n +4 | xargs -I {} echo rm -rf -- "{}"'

如果输出看起来不错(检查它是否确实为您想要删除的所有文件/目录显示"rm…"(,请删除echo

注意:执行的第二部分(第一个xargs不显式查找目录,它还会列出文件。根据您的描述,不清楚您的automation目录是同时包含文件和目录,还是仅包含目录。

相关内容

  • 没有找到相关文章

最新更新