2012-07-27 4 views
1

* % 3A * % 3A * .xml과 같은 파일의 이름을 : : *. xml로 변경하려고합니다.쉘을 여러 번 사용하여 파일 이름 바꾸기

MODFILE=`echo $1 | tr -s '"%3A"' ':'` 
mv $1 "${MODFILE}" 

는 한 내가 한번 직접 연속 % 이상 3A 더 해달라고으로 작업을 수행합니다. 나는 많은 것을 수색했고, 단지 하나의 사건 만있을 때 첫 번째 사건이나 그 사건의 이름을 바꿀 수있는 몇 가지 스크립트를 발견했다.

for files in *%3A*.xml 
do 
    mv "$files" "${files/%3A/:}" 
done 

사람이 좀 도와 주시겠습니까 : 이것은 단지 하나 개의 발생과 작동 예를 들어

? 나는 shellscripting와 그 불편 해요 : 당신이 사용하는 경우/

+0

'tr' 스크립트가 잘못되었습니다. '''또는'%'또는''3'' 또는'A'의 시퀀스를 단일 콜론으로 대체 할 것입니다. – tripleee

답변

3

당신은, 거의 다 왔어 :

mv "$files" "${files//%3A/:}" 

(두 개의 슬래시 대신 하나), 모든 사건이 대체됩니다. 가장 쉬운

+0

와우 정말 쉬웠습니다. 왜 사람들이 그런 복잡한 스크립트 xD를 게시하는 이유는 무엇입니까?// 아니 작동하지// –

+0

Bash는 구문을 바꿉니다 : http://tldp.org/LDP/abs/html/string-manipulation.html (부분 문자열 교체 참조) – beny23

1

rename %3A : * 

그것은 단지를 선두 걸릴 수 있습니다 이름을 사용하는 것입니다,하지만 당신은 다시 실행해야합니다.

이름 바꾸기는 정규식을 입력으로 허용 할 수도 있지만 시스템에 따라 다릅니다.

+0

예 오직 첫 번째 걸리고 난 다음 10 배는 그다지 좋지는 않습니다. –

+0

@DennisIch 그러면 시스템 이름 바꾸기가 정규식을 허용하는지 테스트 한 다음''s/% 3A/:/g '*'또는 그와 비슷한 이름으로 바꿉니다 – Bernhard