rm을 사용하여 다른 명령을 사용하지 않고 패턴과 일치하는 파일 및 디렉토리를 반복적으로 제거 할 수 있습니까?
답변
귀하의 질문에 직접 대답하기 위해 “아니요-귀하가 설명하는 것을 할 수 없습니다 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
답변
“다른 명령을 사용하지 않고”
아니.
답변
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에서 시작하여 해당 패턴에 해당하는 파일을 재귀 적으로 제거합니다.
답변
zsh (1) 을 사용하는 경우 setopt extendedglob
.zshrc 에서 “확장 globbing”을 켜십시오 . 패턴 앞에 ‘** /’를 붙이면 재귀 적으로 삭제됩니다.
% rm -rf ** / <패턴>
이있는 경우 그러나, 많은 당신에 의존해야 삭제할 파일 (1)을 찾을 수 와 xargs를 (1) 또는 간부가, 그리고 나 또한 일을하는 것이 좋습니다 쉘 스크립트에서 그.