답변:
당신은 모든 것을 올바르게하고 있습니다. 문제를 일으키는 것은 '*' 입니다 (쉘이 파일 대신 파일 목록으로 확장 find
). 올바른 구문은 다음과 같습니다.
cd <your_directory>; find . -type f | xargs rm -f
find <your_directory> -type f | xargs rm -f
(후자는 더 긴 이름을 전달하기 때문에 조금 덜 효율적 xargs
이지만 :-) 거의 눈치 채지 못할 것입니다)
또는 다음 과 같이 '*'를 이스케이프 처리 할 수 있습니다 (그러나이 경우 "."및 ".."도 제거하려고 시도하지만 큰 문제는 아닙니다-약간의 경고가 표시됩니다 :-)).
find . -name '*' | xargs rm -f
find . -name "*" | xargs rm -f
find . -name \* | xargs rm -f
파일 이름에 공백이 있으면 다음을 사용하십시오.
find . -type f -print0 | xargs -0 rm -f
당신은 시도 할 수 있습니다
find /path/to/folder -type f -print0 | xargs -0 rm -f
또는
find /path/to/folder -type f -exec rm -f "{}" +
퀀 타즈에게 해답을 구하는 방법은 다음과 같습니다.
특정 이름 패턴을 가진 파일을 삭제하려면 다음과 같이 작성할 수 있습니다. 또한 -print를 추가하여 파일이 삭제 될 때 발생하는 상황을 확인할 수 있습니다.
sudo find /home/mydirectory -name "*.jpg" -type f -print -delete
예를 들어 이것은 mydirectory의 모든 jpeg를 삭제합니다.