파일 만 삭제하고 디렉토리 구조를 유지하는 방법은 무엇입니까?


16

모든 파일을 삭제하고 싶지만 폴더 구조는 유지하십시오. 방법이 있습니까?

참고 : (GNU bash 4.1.5를 사용하고 있습니다).


1
정확히 "제외"한다는 의미는 무엇입니까? 어떤 종류의 명령을 사용하고 있습니까? 그렇다면 질문을 업데이트하여 포함 시키십시오.
— slm


모든 파일을 삭제하는 것을 의미한다고 생각합니다.
— slm

1
@slm 일반적으로 파일을 제외하는 데 사용하는 명령으로 업데이트했습니다.
— 톰 브리토

아니 당신은하지 :-) 또는, 만약 당신이 그것을 다시 제거했다
— Mawg는 모니카가 복원 모니카

답변:


17

이 시도:

find . ! -type d -exec rm '{}' \;

현재 작업 디렉토리 아래의 디렉토리를 제외한 모든 단일 파일이 삭제됩니다. 이 명령에 매우주의하십시오.

find컴퓨터 의 버전에서 지원하는 경우

find . ! -type d -delete

@ slm : 그것이 얼마나 휴대 가능한지 잘 모르겠습니다. 보조 옵션으로 추가했습니다. 방금 편집 한 내용이 귀하의 답변과 거의 동일하다는 것을 깨달았습니다. 미안합니다; 그것은 내 의도가 아니었다.

'{}'은 (는) 파일의 공백을 방지합니까? 나는 당신이 항상 사용하는 것을 보았고 솔루션을 게시하기 전에 그것이 사용 된 것을 본 적이 없다고 생각합니다.
— slm

GNU find 맨 페이지에서 "중괄호는 작은 따옴표로 묶어 쉘 스크립트 문장 부호로 해석되지 않도록주의하십시오." 그래도 언제 필요한지 잘 모르겠습니다. 나는 대부분 습관에서 벗어납니다. find명령은 절대로 인용 부호를 볼 수 없습니다. 단지 {}마커를 인수로 본다 .

예제에서 볼 수 있지만 템플릿에는 " -exec command {} +"& this " -exec command ;"가 표시됩니다. 나는했습니다를 사용하지 \;단지 결코 '{}'과거에.
— slm

@slm : 템플릿에는 세미콜론 이스케이프도 표시되지 않습니다. 일반적으로 쉘을 사용하여 실행할 때 필요 find합니다. 템플릿은 find명령에 필요한 인수를 보여주고 쉘 관련 사항에 대해 걱정하지 않아도된다고 생각합니다.

7

이 명령 find을 사용하여 모든 파일을 찾을 수 있지만 디렉토리 구조는 유지 보수 할 수 있습니다 .

$ find /some/dir -type f -exec rm {} +

이 유닉스 및 리눅스 Q & A에 따르면, gnu 찾기 및 일부 쉘에 대한 {} 마스킹 – 어떤 것? , {}단일 진드기 ( ')로 이스케이프 처리하는 것이 더 이상 Bash와 같은 현대 쉘에서는 필요하지 않은 것으로 보입니다.


1

현재 디렉토리 및 서브 디렉토리의 모든 일반 파일을 재귀 적으로 삭제하는 쉬운 방법 :

zsh -c 'rm **/*(.)'

zsh만이 유형별로 파일을 일치시키는 globbing 한정자 를 갖 습니다. 그러나 rm명령은 디렉토리에서 작동하지 않으므로 bash에서는 다음을 사용할 수 있습니다

shopt -s globstar
rm **/*

rm그러나 다른 명령에서는 작동하지 않습니다 . 일반적으로 다음을 사용할 수 있습니다 find.

find . -type f -delete

또는 find지원하지 않는 경우 -delete:

find . -type f -exec rm {} +

-2

디렉토리 구조를 삭제하지 않고 경로와 하위 디렉토리 (시간별로 필터링)에서 파일을 삭제해야하는 비슷한 요구 사항이있었습니다.

그리고 나는 나를 위해 일한 아래 형식을 사용했습니다.

/ 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 명령의 출력

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


1
이것은 OP가 언급하지 않은 추가 요구 사항이므로 기본 find ... rm구조가 이미 다루었으므로 이것이이 질문에 대한 새로운 답변으로 귀중한 기여인지 확실하지 않습니다.
— Jeff Schaller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.