2012-09-06 4 views
3

에서 파일의 일괄 이름 바꾸기 각기 다른 확장 기능을 사용하기 위해 "oldname"을 "newname"으로 이름을 바꿔서 시도해 보았습니다. 따라서 시도해 보았습니다 :내가 다음과 같이 파일의 세트가 UNIX

rename -v 's/\oldname_*.*$/\newname_*.*/’ oldname_*.* 

하지만 작동하지 않습니다 ..

어떤 제안이 있습니까?

+0

체크 여기 : HTTP : //theunixshell.blogspot. co.kr/2013/01/bulk-renaming-of-files-in-unix.html – Vijay

답변

4

한 가지 방법은 파일 이름을 변경 :

for i in oldname*; do mv "$i" "${i/oldname/newname}"; done 
+0

감사합니다. :) – madkitty

3

먼저 "작동하지 않는 것"이 ​​실제로 무엇을 의미하는지 지정해야합니다. 그것은 아무것도하지 않습니까? 잘못 이름을 바꿉니 까? 해부학의 특정 부분에 전기 펄스를 전달합니까? 당신이 생각에 다른 것을 의미하기 때문에 (

rename -v 's/^oldname/newname/' oldname_*.* 

실제 표현에서 와일드 카드 물건, 특히을 포함 할 필요가 없습니다 : :-)

어떤 경우

, 나는으로 시작 했죠 xyz_*xyz을 의미하고 그 뒤에 0이 _자를 의미하고, 이 아니고 xyz_이되며 그 다음에 아무 것도 표시되지 않으며 .*은 0 이상의 문자를 의미하기 때문에 문제를 묻는 것입니다.

파일 이름의 필터링은 마지막 인수에 의해 수행됩니다. 해당 인수와 일치하는 파일 만 이름이 변경된다는 것을 알고 있으므로 정규 표현식을 조정하여 첫 번째 비트를 변경할 수 있습니다.


또한, 당신이 바로 rename이 있는지 확인하십시오. 구문이 다른 리눅스가 사용할 수있는 다른 rename이있다 : 그 시스템에서

rename oldname newname oldname_*.* 

는 정규식의 변형은 종종 prename라고합니다.


마지막으로, 그리고 바보 같은 질문이있을 수 있습니다 무엇을 용서, 파일이 당신이 그들을 것으로 예상 이름의 것을 확인 당신입니까? 간단한 ls -al oldname*이이를 보여야합니다. 여담으로


, 이것은 내 데비안 상자에서 잘 작동 :

pax> touch oldname_1.txt oldname_1.pdf oldname_1.bak 

pax> ll *name* 
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 oldname_1.bak 
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 oldname_1.pdf 
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 oldname_1.txt 

pax> rename -v 's/^oldname/newname/' oldname_*.* 
oldname_1.bak renamed as newname_1.bak 
oldname_1.pdf renamed as newname_1.pdf 
oldname_1.txt renamed as newname_1.txt 

pax> ll *name* 
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 newname_1.bak 
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 newname_1.pdf 
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 newname_1.txt 
+0

예 내 라인은 아무 것도하지 않습니다. 나는 방금 이름 바꾸기 -v 's/^ oldname/newname /'oldname *. *을 시도했다. 불행히도 그것은 아무것도하지 않는다. 나는 chmod 777에 대한 허가도 변경하지 않았다. – madkitty

+0

@madkitty, 더 많은 독서와 실험이 필요합니다.답을 다시 읽을 수 있습니까? – paxdiablo

+0

답장을 보내 주셔서 감사합니다. 파일 이름을 바꾸려면 다음 배치 파일에이 파일을 보관합니다. 설명은 매우 유용합니다. :) – madkitty

관련 문제