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

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

현재/작업 디렉토리(를 사용하여 탐색 cd)를 특정 디렉토리로 설정하고 다음을 입력하는 경우:

rm *.xvg

이 명령은 무엇을 합니까? 위의 명령이 사실입니까?오직확장자를 가진 파일을 삭제하세요.xvg 오직작업 디렉토리에?

.xvg위의 명령이 파일 만 삭제하는지 확실히 확인하고 싶었기 때문에 요청하기 전에 이 작업을 시도하는 것이 불안했습니다.작업 디렉토리에 위치.

답변1

응, rm *.xvg그럴 거야오직지정된 확장자를 가진 파일을 삭제하십시오.현재의예배 규칙서.

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

명령 실행이 조금 불안하다면 다음 rm두 가지 작업을 수행할 수 있습니다.

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

  2. 당신이 가지고 있지 않는 한많은-i파일의 경우 언제든지 명령줄 스위치를 사용할 수도 있습니다 ( 및 rm에도 있음 ). 를 사용하면 삭제해도 괜찮은지 각 개별 파일에 대한 메시지가 표시되므로 예상하지 못한 내용이 삭제되지 않았는지 확인할 수 있습니다. (파일이 많으면 지루할 수 있습니다 :)cpmvrm -i *.xvg

답변2

디렉토리로 이동할 필요가 없습니다.

rm /some/dir/*.xvg 

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

cd /som/dir
rm *.xvg

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

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

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

답변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그러나 동일한 디렉토리에 입력하면 파일이 삭제됩니다. 여기서 일어나는 일은 명령을 입력하는 데 사용하는 프로그램인 셸이 명령에 인수를 전달하기 전에 몇 가지 변환을 수행한다는 것입니다. 그 중 하나는 '파일 이름 확장'이라고 하며, 그렇지 않으면 'globbing'이라고도 합니다. Bash 파일 이름 확장 목록을 볼 수 있습니다.여기. 가장 일반적인 확장 중 하나는 *현재 디렉터리의 파일 이름으로 확장되는 입니다.

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

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

답변4

명령 :

  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)

관련 정보