디렉토리 내의 하위 디렉토리에 있는 파일+파일 삭제

디렉토리 내의 하위 디렉토리에 있는 파일+파일 삭제

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.

관련 정보