파일만 삭제하고 디렉터리 구조는 유지하려면 어떻게 해야 합니까?

파일만 삭제하고 디렉터리 구조는 유지하려면 어떻게 해야 합니까?

모든 파일을 삭제하고 폴더 구조를 유지하고 싶습니다. 어떤 방법이 있나요?

참고: (저는 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 명령의 출력

참고: 사용하기 전에 테스트하십시오. 제가 놓친 부분이 있으면 언제든지 수정하거나 업데이트해 주시기 바랍니다.

관련 정보