경로에서 마지막 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 명령에 전달합니다.

관련 정보