특정 패턴과 일치하는 디렉터리를 제외하고 해당 디렉터리의 모든 하위 디렉터리와 파일을 삭제하고 싶습니다.
example_dir/model-*/gen-*/share/**
일반 설정: 각 모델이 1세대 이상인 여러 모델(> 100)을 생성했습니다. 해당 모델(예: example_dir/model-0/gen-0/
)에는 여러 디렉터리와 하위 디렉터리가 있습니다.
원하는 결과: 일치하는 항목을 제외한 모든 디렉터리와 파일을 삭제하고 싶습니다.
example_dir/model-*/gen-*/share/
각 단일 모델/세대/ 내에서는 다음과 같습니다.
rm -rf !(share)
답변1
귀하의 질문을 완전히 이해했는지 잘 모르겠고 후속 질문이 어떤 것인지 잘 모르겠습니다. 제가 궁금한 점 중 하나는 다음과 같은 디렉토리 트리가 있다면
example_dir
|-- model-0
| |-- gen-0
| | |-- share
| | |-- trash
| | | |-- more_trash
| | |-- file123.txt
| |-- grandfather
|-- platypus
foo
(및 해당 내용)을 삭제하는 것으로 충분합니까 , 아니면 , 및 example_dir/model-0/gen-0/trash
도 삭제하시겠습니까 ? 그리고 어때요 ?example_dir/model-0/grandfather
example_dir/platypus
foo
example_dir/model-0/gen-0/file123.txt
trash
및 해당 내용을 삭제하려면 file123.txt
다음을 시도하십시오.
#!/bin/bash
shopt -s extglob
echo rm -rf example_dir/model-*/gen-*/!(share)
trash
(및 해당 내용)을 삭제하고 보존하려면 file123.txt
다음을 시도하십시오.
#!/bin/bash
shopt -s extglob
echo rm -rf example_dir/model-*/gen-*/!(share)/
/
( 뒤에 추가 !(share)
).
어느 쪽이든 출력을 주의 깊게 살펴보고 원하는 내용이 확실하다면 echo
.
example_dir
이외의 최상위 디렉터리 , 패턴과 일치하지 않는 첫 번째 수준 디렉터리 model-*
또는 패턴과 일치하지 않는 두 번째 수준 디렉터리 도 삭제하려면 gen-*
질문을 편집하여 명확히 하세요.