8개의 다른 하위 디렉터리를 포함하는 /data 디렉터리의 모든 파일을 삭제하고 싶습니다.
실제 폴더를 삭제하지 않고 모든 하위 디렉터리를 재귀적으로 지우는 명령이 있습니까?
답변1
다음 명령은 /data
일반 파일, 심볼릭 링크, 명명된 파이프, 소켓 등과 같이 디렉터리 안이나 아래에 있는 디렉터리가 아닌 모든 파일을 삭제합니다.
find /data ! -type d -delete
find
비표준 조건자가 없는 구현의 경우 -delete
해당 -exec rm -f {} +
위치에 다음을 사용하세요.
find /data ! -type d -exec rm -f {} +
그러면 그 안이나 그 아래에 있는 디렉터리가 아닌 모든 파일을 찾아 가능한 한 많은 배치로 실행합니다 /data
.rm -f
답변2
찾기 명령을 사용하세요
find /data -type f -exec rm -rf {} \;
유형 선택 유형에 따라 파일만 삭제됩니다. f.
답변3
이 find
명령을 사용하여 이를 수행할 수 있습니다.
설명을 재현하기 위한 테스트 사례를 만들려면 다음을 수행하겠습니다. cd /tmp
1.2.3.4.mkdir -p testing/{a,b,c}
cd testing/
touch {a,b,c}/{1,2,3}
각각 여러 파일을 포함하는 디렉터리가 여러 개 있는지 확인하려면 다음 안내를 따르세요.
$ find -type f
./c/3
./c/2
./c/1
./b/3
./b/2
./b/1
./a/3
./a/2
./a/1
find
이제 다시 사용하여 찾은 내용을 삭제할 수 있습니다.
find -type f -delete
지금 다시 실행 하면 find -type f
파일이 사라졌기 때문에 결과가 반환되지 않지만 디렉터리는 여전히 남아 있는 것을 볼 수 있습니다.
$ ls
a b c
이 find
명령은 매우 강력합니다. 더 많은 관련 정보를 검색하는 데 사용할 수 있습니다 man find
.