"edit"라는 단어가 포함되지 않은 지정된 경로의 모든 폴더를 삭제하시겠습니까?

"edit"라는 단어가 포함되지 않은 지정된 경로의 모든 폴더를 삭제하시겠습니까?

광산을 정리하기 위해 간단한 스크립트를 설정하려고 합니다 working folder. 그 working folder구조는 다음과 같습니다.

Project 1
Project 1 [edited]
Project 2
Project 2 [edited]
Project 3
Project 3 [edited]
...

모든 프로젝트 폴더에는 파일만 포함됩니다. 목표는 working folder해당 폴더 내의 모든 폴더를 삭제하는 것입니다아니요[edited]명목상 있습니다.

답변1

GNU find를 사용하면 다음과 같습니다.

find . -maxdepth 1 -mindepth 1  ! -name "*edit*"

이름에 "edit"가 없는 현재 디렉터리의 파일과 일치해야 하며 이름을 인쇄해야 합니다. 물론 -type d -iname "*project*"이름에 "project"가 포함된 디렉터리만 일치시키도록 추가할 수도 있습니다. 출력이 올바르면 추가 -delete하여 find제거할 수 있습니다.

실제로 Bash를 사용하면 shopt -s extglob다음을 사용할 수도 있습니다.

echo rm -r !(*edit*)/

후행 슬래시는 디렉토리에만 일치하게 하고 echo명령을 실행하지 않고 인쇄만 합니다.

관련 정보