Centos에서 디렉토리의 내용을 삭제하는 방법


9

CentOS에서 폴더의 모든 내용을 삭제해야하지만 폴더 자체는 삭제하지 않아야합니다.

예를 들어 : 하위 폴더 FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... 등 및 일부 파일을 포함하는 "MYFOLDER"라는 폴더가 있습니다. 컨테이너 폴더 MYFOLDER가 아닌 이러한 폴더와 파일을 모두 삭제해야합니다. 이전 프로세스의 결과를 지시하려면이 디렉토리가 필요합니다.

rm -rf 명령으로 시도했지만 컨테이너 폴더도 삭제됩니다.

답변:


11

대신 폴더의 내용을 삭제하십시오.

rm -r MYFOLDER/*

1
이것은 MYFOLDER 내의 파일 / 디렉토리를 숨기지 않습니다.
tylerl

1
@ tylerl : shopt -s dotglob먼저 설정하면됩니다 .
jgoldschrafe

이를 위해서는 각 서브 디렉토리로 내려가는 y / n을 수동으로 승인해야합니다. 이는 시간 낭비입니다. 올바른 명령은 모든 것을 자동으로 처리하므로 50 개의 프롬프트가 표시되지 않습니다.
CodeMed

rm -R /path/to/myfolder/*모든 파일과 하위 폴더의 삭제를 승인하는 과도한 요청을 피하기위한 올바른 구문입니다. 수도에 주목하십시오 R.
CodeMed

5

당신이 사용할 수있는:

rm -r MYFOLDER/{.[^.],.??*}

숨겨진 파일과 폴더도 삭제됩니다. MYFOLDER 디렉토리에 파일이 너무 많으면 대신 다음을 실행해야합니다.

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

meta/디렉토리에 500k가 넘는 파일이 있으므로 xargs 대안을 사용하고 싶었지만 다음과 같은 오류 메시지가 나타납니다. ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK

1
bash쉘을 사용하고 있는지 확인하십시오 . 쉘은 파일 패턴에 대해 "중괄호 확장"및 "정규 표현식"을 지원해야합니다.
Mircea Vutcovici 2016 년

3

내 생각에 가장 쉬운 방법은 자신을 포함하여 전체 디렉토리를 삭제 한 다음 폴더를 다시 만드는 것입니다. 이것이 좋은 솔루션이 아닌 상황 (예 : 무인 스크립트 또는 더 복잡한 파이프 라인)이지만 폴더를 삭제하지 않으려는 이유를 지정하지 않은 경우가 있습니다.

rm -rf foldername
mkdir foldername

죄송합니다. 당신은 (당신의 게시물을 다시 읽었습니다) 지정했습니다. 그래도 여전히 삭제하고 재생성 할 수 있습니다. 특히 명령을 서로 연결하면

rm -rf foldername && mkdir foldername

또는

rm -rf foldername; mkdir foldername

부모 폴더에 권한이 없거나 알지 못하는 특정 속성을 유지하려는 경우가 있습니다. 예를 들어 루트가 아닌 사용자로 홈 폴더를 삭제할 수는 없지만 그 아래의 항목은 제거 할 수 있습니다.
Mircea Vutcovici

이것이 정답입니다. +1
CodeMed



0

이 대안을 강력히 권장합니다 (이름에 공백이있는 파일도 제거합니다).

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.