Linux에서 특정 문자열로 시작하는 모든 파일을 제거하는 방법


36

NAME디렉토리 트리에서 이름 으로 시작하는 모든 파일을 찾아서 하나의 쉘 명령을 사용하여 모든 파일을 제거해야합니다.

답변:


1

이름이있는 모든 파일을 삭제하려면

find -name . 'name*' -exec rm {} \;

1
-f를 'rm'인수로 추가하여 "X 파일을 제거 하시겠습니까?"라는 메시지가 표시되지 않습니다.
UtahJarhead

어떤 버전은 grep-exec스위치를?
벤 그레이엄

이 댓글에 다운 보트가있는 이유는 무엇입니까?
Ultrasonic54321

64

파일 이름이 "foo"로 시작하는 현재 디렉토리 및 해당 서브 디렉토리의 모든 파일을 삭제하십시오.

$ find . -type f -name foo\* -exec rm {} \;

주의 :주의해서 사용하십시오 – 먼저 백업하십시오 – 또한 먼저 드라 이런을하십시오.

$ find . -type f -name foo\*

삭제 될 파일 이름 만 알려줍니다.


5
나는 200 만 파일을 통해 삭제했고 문제로 실행, find . -type f -name foo\* -delete트릭했다
의 Linas

25

나는이 작업을 시도하여 아래 명령을 시도했다.

rm -rf Example*

여기서 "예"는 모든 파일에 공통적 인 텍스트입니다.


4
왜 이것이 가장 투표가 많은 답변이 아닌지 잘
모르겠습니다

@DanTheMan 다른 답변보다 ~ 4 년 더 오래 되었기 때문입니다. 이것은 확실히 가장 간단한 대답입니다.
joshuakcockrell

10

당신은 사용할 수 있습니다 find:

find . -name "name*" -exec rm {} \;

또한 '.'을 지정하는 대신 절대 경로를 지정할 수 있습니다.
UtahJarhead

3

globstar옵션을 사용하면 (로 활성화 shopt -s globstar) :

rm -f **/NAME*

**/팽창은하는 ./, */, */*/, */*/*/당신이있는 경우 등 디렉토리 로 시작하는 이름을 NAME명령은 불평 할 rm디렉토리를 제거 할 수 있지만, 그게 다야.

glob이 많은 파일과 일치하는 경우 명령 행 길이 제한이 발생할 수 있습니다.

또는 rm가능한 한 적은 호출로 명령 행 길이 제한이 적용되지 않습니다.

find . -type f -name 'NAME*' -exec rm -f {} +

( 문 을 닫는 +대신에 통지하십시오 .)\;-exec


2

find . -name 'foo'* -type f -delete 가장 간단한 답변처럼 보입니다.

-delete어떤 파일이 삭제되는지보기 전에 플래그 없이 이것을 실행할 수 있습니다 .


-2

파일 / 폴더의 "Inode"번호를 검색 한 다음 inode 번호를 사용하여 삭제하십시오. 아래는 예입니다.

ls -il
3407873 drwxr-xr-x. 2 root   root      4096 Mar 30 07:49 p

find . -inum 3407873 -exec rm -rf {} \;

이것은 다른 질문에 대한 좋은 대답 입니다. 질문에 대한 답 아닙니다 .
Scott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.