모든 파일을 삭제하고 싶지만 폴더 구조는 유지하십시오. 방법이 있습니까?
참고 : (GNU bash 4.1.5를 사용하고 있습니다).
모든 파일을 삭제하고 싶지만 폴더 구조는 유지하십시오. 방법이 있습니까?
참고 : (GNU bash 4.1.5를 사용하고 있습니다).
답변:
이 시도:
find . ! -type d -exec rm '{}' \;
현재 작업 디렉토리 아래의 디렉토리를 제외한 모든 단일 파일이 삭제됩니다. 이 명령에 매우주의하십시오.
find
컴퓨터 의 버전에서 지원하는 경우
find . ! -type d -delete
find
명령은 절대로 인용 부호를 볼 수 없습니다. 단지 {}
마커를 인수로 본다 .
-exec command {} +
"& this " -exec command ;
"가 표시됩니다. 나는했습니다를 사용하지 \;
단지 결코 '{}'과거에.
이 명령 find
을 사용하여 모든 파일을 찾을 수 있지만 디렉토리 구조는 유지 보수 할 수 있습니다 .
$ find /some/dir -type f -exec rm {} +
이 유닉스 및 리눅스 Q & A에 따르면, gnu 찾기 및 일부 쉘에 대한 {} 마스킹 – 어떤 것? , {}
단일 진드기 ( '
)로 이스케이프 처리하는 것이 더 이상 Bash와 같은 현대 쉘에서는 필요하지 않은 것으로 보입니다.
현재 디렉토리 및 서브 디렉토리의 모든 일반 파일을 재귀 적으로 삭제하는 쉬운 방법 :
zsh -c 'rm **/*(.)'
zsh만이 유형별로 파일을 일치시키는 globbing 한정자 를 갖 습니다. 그러나 rm
명령은 디렉토리에서 작동하지 않으므로 bash에서는 다음을 사용할 수 있습니다
shopt -s globstar
rm **/*
rm
그러나 다른 명령에서는 작동하지 않습니다 . 일반적으로 다음을 사용할 수 있습니다 find
.
find . -type f -delete
또는 find
지원하지 않는 경우 -delete
:
find . -type f -exec rm {} +
디렉토리 구조를 삭제하지 않고 경로와 하위 디렉토리 (시간별로 필터링)에서 파일을 삭제해야하는 비슷한 요구 사항이있었습니다.
그리고 나는 나를 위해 일한 아래 형식을 사용했습니다.
/ test123 / home / test_file_hip / data / nfs 찾기 -mtime +6 -type f -exec rm {} \;
Syntex : 찾기 (파일 경로) -mtime (일보다 크거나 작음) -type f -exec rm {} \;
-type : "d"디렉토리에 대해 "f"파일의 유형을 언급합니다. -exec : execute command rm : remove {} : find 명령의 출력
참고 : 사용하기 전에 테스트하십시오. 내가 놓친 부분이 있으면 언제든지 수정하거나 업데이트하십시오.
find ... rm
구조가 이미 다루었으므로 이것이이 질문에 대한 새로운 답변으로 귀중한 기여인지 확실하지 않습니다.