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


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.