특정 폴더에서 특정 확장자를 가진 모든 파일을 어떻게 삭제합니까?


36

현재 / 작업 디렉토리 (을 사용하여 탐색 cd)를 특정 디렉토리로 설정 한 후 다음을 입력하십시오.

rm *.xvg

이 명령은 무엇을합니까? 위의 명령이 작업 디렉토리 에서만 확장자를 가진 파일 삭제 한다는 것이 사실 입니까?.xvg

위의 명령이 작업 디렉토리에있는.xvg 파일 만 삭제한다는 것을 절대적으로 확신하기 때문에 요청하기 전에 이것을 시도하는 것에 대해 긴장했습니다 .

답변:


34

예, rm *.xvg됩니다 당신의 지정된 확장자를 가진 파일을 삭제 현재 디렉토리.

실제로 파일을 삭제하려는 디렉토리에 있는지 확인 하는 좋은 방법은 pwd현재 디렉토리를 표시 하는 명령 을 사용하고 원하는 파일 ls을 찾는 지 확인하는 것입니다.

rm명령 실행에 대해 조금 불안한 경우 다음 두 가지 작업을 수행 할 수 있습니다.

  1. ls *.xvg이 명령의 영향을받는 파일 목록을 보려면 type 을 입력 하십시오.

  2. 당신이 있지 않는 한 많은 파일을, 당신은 항상 또한 사용할 수 -i에 대한 명령 줄 스위치를 rm(또한 존재 cp하고 mv). 사용하여 rm -i *.xvg그것을 삭제 확인 있다면 당신은 당신이도 삭제 된 기대하지 않았는지 아무 것도 없을 수 있도록, 각 개별 파일에 대한 메시지를 표시합니다. (파일이 많으면 지루할 것입니다.)


1
또한 : rm -f {*.xvg,.*.xvg}숨겨진 파일도 제거합니다. 그리고 rm -R -f {*.xvg,.*.xvg}또한 디렉토리를 제거합니다.
Dor

20

디렉토리를 탐색 할 필요가 없습니다.

rm /some/dir/*.xvg 

/ som / dir이 존재하지 않는 경로에 오타 나 유사한 실수가있는 경우 :

cd /som/dir
rm *.xvg

현재 디렉토리의 모든 .xvg 파일을 실수로 삭제합니다. 첫 번째 명령은 필요하지 않으며 다시 CD를 다시 입력 할 필요가 없습니다.

다른 방법은 find를 사용하는 것입니다.

find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete 

찾기 / some / dir / -maxdepth 1-유형 f-이름 "* .xvg"-삭제가 나를 위해 일했습니다! -maxdepth "n"을 사용하여 지정된 경로에 하위 디렉토리에서 일치하는 파일을 삭제하십시오
Vinay

3

예, 현재 디렉토리에서 rm *.xvg끝나는 파일 만 삭제합니다 .xvg. 이유는 다음과 같습니다.

이와 같은 명령을 입력하면 사용중인 쉘 (bash로 가정)과 명령 바이너리로 작업이 분할됩니다.

을 입력하여 바이너리를 찾을 수 있습니다 which rm. 이 작은 프로그램은 파일 연결 해제를 처리합니다. 이와 같은 프로그램은 명령 행에서 시작할 수 있으며 시작할 prog arg1 arg2 arg3때 인수 목록을 읽을 수 있습니다 . 의 경우 rm삭제 될 정규화 된 파일 이름 목록으로 해석됩니다. 따라서 파일이 들어있는 디렉토리에 있으면을 foo.bar입력 delete 'foo.*'하면 결과가 나타납니다 rm: foo.*: No such file or directory. 파일 패턴 주위의 작은 따옴표는 셸에 인수를 그대로 셸에 전달하도록 지시합니다.

그러나 rm *.bar같은 디렉토리에 입력 하면 파일이 삭제됩니다. 여기서 일어나는 일은 명령을 입력하는 데 사용하는 프로그램 인 쉘이 인수를 명령에 전달하기 전에 약간의 변환을 수행한다는 것입니다. 이 중 하나를 '파일 이름 확장'이라고하며, 그렇지 않으면 '글 로빙'이라고합니다. 여기서 bash 파일 이름 확장 목록을 볼 수 있습니다 . 가장 일반적인 확장 중 하나는 *현재 디렉토리에서 파일 이름으로 확장됩니다.

직장에서 globs를 보는 간단한 방법 echo은 쉘을 통해 전달 된 모든 인수를 다시 출력하는 을 사용 하는 것입니다. 따라서 echo *같은 디렉토리에 입력 하면 출력 foo.bar됩니다. 따라서을 입력하면 rm *.bar실제로 발생하는 것은 쉘이 인수 목록을 확장 foo.bar하여 rm명령에 전달한다는 것 입니다.

글 로빙을 제어하는 ​​몇 가지 방법이 있습니다. 예를 들어 최신 버전의 bash에서는 재귀 확장을 수행하는 globstar라는 옵션을 켤 수 있습니다. 입력 echo **/*.bar하면 .bar모든 하위 폴더로 끝나는 모든 파일 목록이 표시됩니다 . 따라서 rm **/*.barglobstar enabled bash에 입력 하면 하위 폴더의 모든 일치하는 파일이 재귀 적으로 삭제됩니다.


1

사령부 :

  rm ./*.pgm

나를 위해 일한다

명령:

rm *.pgm

오류 명령 제공 (폴란드어, 번역됨) :

rm: wrong option - '1'
Use "rm ./-1000.pgm" to delete the file '-1000.pgm'.
Write "rm --help" for information.

...에서

bash --version
GNU bash, wersja 4.4.19(1)-release (x86_64-pc-linux-gnu)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.