如何从路径中删除最后 6 个目录

如何从路径中删除最后 6 个目录

对于一个要求,我必须从目录 test3 清除到 test8,即最后 6 个目录。

[testuser@test4 logs]$ pwd
/util/team4/logs

drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test1
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test2
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test3
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test4
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test5
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test6
-rw-r--r-- 1 testuser team4     0 Nov 30 01:18 files_between_7
-rw-r--r-- 1 testuser team4     0 Nov 30 01:18 files_between_8
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:18 test7
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:18 test8

你能建议如何做到这一点吗?

答案1

你可以使用这个:

ls -dt */ |head -n 6| xargs -I{} rm -vr {}

或者你可以使用:

find ./* -type d  -printf "%T+\t%p\n" | sort | head -n 6 | awk -F "/" '{print $NF}'  | xargs -I{} rm -vr {}

这适用于名称中有空格的文件夹

用于删除除前 6 个目录之外的所有目录

find ./* -type d  -print | sort | tail -n +7 |  awk -F "/" '{print $NF}' | xargs -I{} rm -vr {}

答案2

您可以使用此命令删除 ls 中的最后 6 个目录

ls -l |tail -n 6|tr -s " " " "|cut -d " " -f 9 |xargs rm -R
  • tail -n 6将为您提供列表中的最后 6 个目录
  • tr -s " " " "将多个空格转换为一个空格
  • cut -d " " -f 9将提取目录的名称
  • xargs rm -Rxargs 会将 6 个目录的名称传递给命令 rm -R

相关内容