답변:
예, rm *.xvg
됩니다 만 당신의 지정된 확장자를 가진 파일을 삭제 현재 디렉토리.
실제로 파일을 삭제하려는 디렉토리에 있는지 확인 하는 좋은 방법은 pwd
현재 디렉토리를 표시 하는 명령 을 사용하고 원하는 파일 ls
을 찾는 지 확인하는 것입니다.
rm
명령 실행에 대해 조금 불안한 경우 다음 두 가지 작업을 수행 할 수 있습니다.
ls *.xvg
이 명령의 영향을받는 파일 목록을 보려면 type 을 입력 하십시오.
당신이 있지 않는 한 많은 파일을, 당신은 항상 또한 사용할 수 -i
에 대한 명령 줄 스위치를 rm
(또한 존재 cp
하고 mv
). 사용하여 rm -i *.xvg
그것을 삭제 확인 있다면 당신은 당신이도 삭제 된 기대하지 않았는지 아무 것도 없을 수 있도록, 각 개별 파일에 대한 메시지를 표시합니다. (파일이 많으면 지루할 것입니다.)
디렉토리를 탐색 할 필요가 없습니다.
rm /some/dir/*.xvg
/ som / dir이 존재하지 않는 경로에 오타 나 유사한 실수가있는 경우 :
cd /som/dir
rm *.xvg
현재 디렉토리의 모든 .xvg 파일을 실수로 삭제합니다. 첫 번째 명령은 필요하지 않으며 다시 CD를 다시 입력 할 필요가 없습니다.
다른 방법은 find를 사용하는 것입니다.
find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete
예, 현재 디렉토리에서 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 **/*.bar
globstar enabled bash에 입력 하면 하위 폴더의 모든 일치하는 파일이 재귀 적으로 삭제됩니다.
rm -f {*.xvg,.*.xvg}
숨겨진 파일도 제거합니다. 그리고rm -R -f {*.xvg,.*.xvg}
또한 디렉토리를 제거합니다.