모든 파일을 삭제하고 폴더 구조를 유지하고 싶습니다. 어떤 방법이 있나요?
참고: (저는 GNU bash 4.1.5를 사용하고 있습니다).
답변1
이 시도:
find . ! -type d -exec rm '{}' \;
현재 작업 디렉터리 아래의 모든 파일(디렉터리 제외)이 삭제됩니다. 이 명령을 사용할 때는 각별히 주의하십시오.
컴퓨터의 버전이 find
이를 지원하는 경우 다음을 사용할 수도 있습니다.
find . ! -type d -delete
답변2
다음 명령을 사용하여 find
각 파일을 찾을 수 있지만 디렉터리 구조는 유지됩니다.
$ find /some/dir -type f -exec rm {} +
Unix and Linux라는 제목의 이 Q&A에 따르면:gnu는 특정 셸에 대해 {}를 찾아 차단합니다. 어느 셸인가요?{}
, Bash와 같은 최신 쉘에서는 단일 틱( )으로 이스케이프하는 것이 '
더 이상 필요하지 않은 것 같습니다.
답변3
현재 디렉터리와 하위 디렉터리의 모든 일반 파일을 재귀적으로 삭제하는 간단한 방법:
zsh -c 'rm **/*(.)'
zsh만이 가지고 있습니다.와일드카드 한정자유형별로 파일을 일치시킵니다. 그러나 이 rm
명령은 디렉터리에서는 작동하지 않으므로 bash에서는 다음을 사용할 수 있습니다.
shopt -s globstar
rm **/*
이는 이것 이외의 명령에는 영향을 주지 않습니다 rm
. 일반적으로 다음을 사용할 수 있습니다 find
.
find . -type f -delete
또는 find
지원하지 않는 경우 -delete
:
find . -type f -exec rm {} +
답변4
디렉터리 구조를 제거하지 않고 경로 및 해당 하위 디렉터리(시간별로 필터링됨)에서 파일을 제거하려면 비슷한 요구 사항이 있습니다.
나는 나에게 맞는 다음 형식을 사용했습니다.
/test123/home/test_file_hip/data/nfs -mtime +6 -type f -exec rm {} \를 찾으세요.
구문: find(파일 경로) -mtime(일보다 크거나 작음) -type f -exec rm {} \;
-type : "d" 디렉터리에 언급된 "f" 파일 유형 -exec : 명령 실행 rm : 삭제 {} : find 명령의 출력
참고: 사용하기 전에 테스트하십시오. 제가 놓친 부분이 있으면 언제든지 수정하거나 업데이트해 주시기 바랍니다.