각 하위 폴더의 최신 디렉터리를 유지하면서 하위 폴더를 반복적으로 삭제하는 단일 줄을 만들고 싶습니다. find 및 rm 명령을 연결하면 가능할 수도 있지만 어떻게 해야 할지 모르겠습니다. 나는 이것의 일부가 혼란스럽기 때문에 mtime을 믿을 수 없습니다. 세 번째 수준의 모든 디렉터리 이름은 연도, 월, 일, 시(24시간), 분, 초와 같은 날짜 형식으로 지정됩니다.
폴더 구조의 예
parent/a/2020-09-14_104423
parent/a/2020-08-14_230000
parent/a/2020-07-14_100000
parent/b/2020-07-14_140000
parent/b/2019-06-14_104423
parent/b/2019-05-14_104423
parent/c/2020-08-14_100000
parent/c/2019-06-14_174423
parent/c/2019-05-14_104423
...
결과
parent/a/2020-09-14_104423
parent/b/2020-07-14_140000
parent/c/2020-08-14_100000
...
답변1
워크시트 줄에서는 설명된 디렉터리 이름만 고려됩니다.
for dir in parent/*/; do printf "%s\n" "$dir"/*/ | sort -r | tail -n +2; done
삭제할 디렉터리가 나열되며,
for dir in parent/*/; do printf "%s\n" "$dir"/*/ | sort -r | tail -n +2 | xargs rm -rf; done
삭제됩니다.