[완료] recursively 파일 이름 변경하기 (shell programming??)

s.choi의 이미지


안녕하세요?

간단한것 같으면서도 잘 안되는게, 하위 디렉토리를 모두 뒤져서 (recursive) 하게 파일 확장자 명을 변경하려고 합니다.

예를들어, *.tr 이라는 파일 확장자를 가진 파일들을 찾아내어 *.txt 이런식으로 모두 바꿔줄려고 하는데요. 어떻게 하면 간단하게 할 수 있을지 알려주시면 감사드릴께요. :-)

간단하게 find . -name *.tr 하면 하위 디렉토리를 모두 뒤져서 tr 확장자 파일들을 찾아는 내겠는데, 그 파일을 확장자명을 다른걸로 바꿀려고 하니 잘 안되는데요...

cinsk의 이미지

find . -name '*.tr' | while read name; do new="${name/%tr/txt}"; mv "$name" "$new"; done

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

s.choi의 이미지


감사합니다. 위에 적어주신 대로 하니까 깔끔하게 한번에 해결되는군요. :-)

말씀해주신 부분을 응용(?) 하여, 만약 각 파일에 "sometext"를 없애고 다시 저장할 수도 있게 되었습니다.

find . -name '*.tr' | while read name; do new="${name/sometext//}"; mv "$name" "$new"; done

다시한번 도움 말씀에 감사드립니다.