답변:
시험:
find /var/myfolder -type f -delete
이것은 / var / myfolder 아래의 모든 일반 파일을 가져 와서 디렉토리 만 남기고 삭제합니다.
-type f
! =! -type d
zsh에서는 .
glob 한정자 를 사용하여 일반 파일 만 일치 시킵니다 .
rm -- **/*(.)
현재 디렉토리와 하위 디렉토리의 모든 (숨겨지지 않은) 일반 파일을 재귀 적으로 삭제합니다. D
glob 한정자를 추가하여 숨겨진 일반 파일 (및 숨겨진 디렉토리의 일반 파일)도 삭제하십시오.
find . -depth -exec rm {} + 2>/dev/null
rm
디렉토리를 제거하지는 않으므로 모든 디렉토리에서 실행하십시오.
디렉토리에 대한 심볼릭 링크를 유지하려면
find . ! -type d -exec sh -c '
for f do [ -d "$f" ] ||
set "$@" "$f"; shift
done; rm "$@"' sh {} +
그리고 위의 버전에서 테스트해야 할 파일이 많은 경우 약간 최적화 된 방식으로 작동해야한다고 생각합니다 .
find . ! \( -type l -o -type d \) \
-exec rm {} + -o -exec sh -c '
for f do [ -d "$f" ] ||
unlink "$f";done' sh {} +
find
에는 -xtype
옵션이 있습니다.
# This will delete all directory contents, including hidden files and
# subdirectories, without deleting the directory itself
# With GNU find:
find /path/to/directoryToEmpty -mindepth 1 -delete
# OpenBSD (and probably other BSDs)
find /path/to/directoryToEmpty -mindepth 1 -depth -exec rm -f {} \;
# To see what it deletes, in the order it will delete it:
find /path/to/directoryToEmpty -mindepth 1 -depth -print
또한 해당 디렉토리 트리의 상단으로 cd 한 다음 다음을 실행해야합니다.
find . -type f -print0 | xargs -0 rm -rf
디렉토리 트리는 그대로두고 모든 파일을 삭제해야합니다. 공백이 포함 된 파일 또는 디렉토리 이름이없는 경우 -print0 및 -0 옵션을 생략 할 수 있습니다.
find 명령은 파일 (-type f)과 링크 (-type l)를 구별하므로 링크가 있으면 그대로 두어야합니다. 그래도 테스트되지 않았습니다. 의심스러운 경우 다음을 실행하십시오.
찾기 . -l 형
이전 find 명령을 실행하기 전에 어떤 것이 나타나는지 확인하십시오.
rm
깃발 -r, -R, --recursive - remove directories and their contents recursively
이 이것에 어떻게 들어 맞는지 설명 할 수 있습니까 ?