답변:
귀하의 질문에 직접 대답하기 위해 "아니요-귀하가 설명하는 것을 할 수 없습니다 rm
".
그러나와 결합하여 수행 할 수 있습니다find
. 여러 가지 방법 중 하나를 수행 할 수 있습니다.
# search for everything in this tree, search for the file pattern, pipe to rm
find . | grep <pattern> | xargs rm
예를 들어, 모든 * ~ 파일을 압축하려면 다음과 같이하십시오.
# the $ anchors the grep search to the last character on the line
find . -type f | grep '~'$ | xargs rm
주석에서 확장하려면 * :
# this will handle spaces of funky characters in file names
find -type f -name '*~' -print0 | xargs -0 rm
find | grep | xargs rm
. 공백 (또는 줄 바꿈)이있는 파일이있는 경우 파일 이름과 공백에 따라 삭제되어 의도하지 않은 내용이 삭제 될 수 있습니다. find … -print0 | xargs -0 rm
훨씬 더 강력합니다. 그러나 원하는 파일 만 일치시키고 인쇄하려면 술어를 grep
사용할 수 없으며 사용해야 find
합니다. 워렌의 두 번째 예는보다 강력합니다 find -type f -name '*~' -print0 | xargs -0 rm
.
Bash를 사용하여 yes 로 globstar
설정하십시오 .
rm basedir/**/my*pattern*
일치하는 파일을 나열 ls -1
하기 전에 먼저 예를 들어 시도하십시오 rm
.
예를 들어 옵션을 설정 shopt -s globstar
합니다.
또는 더 짧은 find
변형 :
find -type f -name 'my*pattern*' -delete
또는 GNU의 경우 find
:
find -type f -name 'my*pattern*' -exec rm {} +
또는 비 GNU에 대한 또 다른 대안 find
(약간 느린) :
find -type f -name 'my*pattern*' -exec rm {} \;
요청에 따라 디렉토리를 제거하려면 위 명령에서 rm
로 변경 하고 명령 rm -r
에서만 일치를 건너 뛰십시오 .-type f
find
"rm -rf"라고 가정했을 것입니다. 파일 이름의 조합과 * 및? 등 (예 : todays_log_2009 ????. log). 현재 Dir에서 시작하여 해당 패턴에 해당하는 파일을 재귀 적으로 제거합니다.