"rename * *.log *" 명령의 기능은 무엇입니까?

"rename * *.log *" 명령의 기능은 무엇입니까?

저는 Red Hat 7.3을 사용하고 있습니다.

입력할 때 모든 파일 이름에서 이를 제거 rename * *.log *하고 싶습니다 .log

나에게는 이런 일이 일어나지 않았습니다. 간단히 말해서 파일이 사라지고 있는 것 같습니다.

답변1

rename시스템에 어떤 프로그램이 있는지 에 따라 다릅니다 (RHEL 프로그램이 기억나지 않습니다). 의 경우유틸리티 리눅스 이름 바꾸기, 첫 번째 파일의 이름을 두 번째 파일로 바꿀 수 있습니다. 여기에 문제가 있습니다. (명확성을 위해 여기서는 해당 내용을 사용하겠습니다 rename.ul.)

세 개의 파일에 대해 명령 을 내리면 a.log쉘 은 glob을 확장하고 최종 명령 실행은 다음과 같습니다.b.logc.logrename.ul * *.log *

rename.ul a.log b.log c.log a.log b.log c.log a.log b.log c.log

이제 rename처음 두 개를 패턴과 교체로 가져와 나머지 매개변수로 명명된 파일에 적용합니다. 따라서 기본적 으로 명령 은 a.log모든 b.log.c.log a.log b.log c.log a.log b.log c.loga.logb.log다음 a.log목록.

당신이라면 어떨까요 rename?펄 이름 바꾸기( prename) 대신 첫 번째 파일 이름이 유효한 Perl 명령이 아닐 수 있으므로 오류가 발생하고 아무 일도 일어나지 않을 수 있습니다. prename파일은 기본적으로 덮어쓰여지지 않습니다.


util-linux를 통해 이름을 바꾸고 .log사용할 수 있는 파일 이름에서 제거합니다.

$ rename.ul .log "" *.log

그러면 이름 중간에 있는 일치 항목도 변경되므로 v.logger가 됩니다 vger.

Perl을 통해 이름을 바꾸려면 명령은 다음과 같습니다.

$ prename 's/\.log$//' *.log

관련 정보