포터블기기 강좌


이번엔 배시에서 화일이름 일괄 바꾸는방법입니다.

갑자기 화일이름을 바꿔야하는데 너무 많아서 일일이 바꿔주기 어려울 때가 있죠.


sed나 awk같은 다른 프로그램 사용하지 않더라도 대개는 단순한 문자열을 더하거나 빼는 작업정도가 많기에

이런 경우에 쉽게 사용할수 있는 팁입니다.


for블럭으로 mv명령을 반복실행해주고 mv의 목적화일에 해당하는 화일을 차례로 지칭하려면 변수를 {}로 감싸줍니다.

여기서 중요한 것은 {}내에서 두가지 특별문자가 쓰이는데 %는 뒤에서부터 검색하고 /는 앞에서부터 검색하여

해당문자열을 빼줍니다.


예를 들면


${f}   #이것이 목적화일이라 합시다.

${f%.txt}  #이것은 화일이름에서 .txt부분을 지웁니다.

${f/test}  #앞에서부터 검색하여 test를 지웁니다.


치환은 위 토큰의 앞이나 뒤에 써주면 됩니다.

test_${f}   # 원래의 화일이름 앞에  test_ 문자열을 붙입니다.

${f%test.txt}.txt  # ...test.txt란 화일을 ...txt로 바꿉니다.



이해가 잘 안가실거 같은데, 실례를 듭니다.


예를들어 다음과 같은 화일들이 있다 합시다.


test1.txt

test2.txt

test3.txt



1) 화일 이름에서 test를 빼주고 싶다면,

for f in *.txt; do mv -n $f ${f/test}; done


2) 화일 이름의 확장자를 치환하려면 (.txt  -> .text로 치환)

for f in *.txt; do mv -n $f ${f%.txt}.text; done


3) 화일이름 앞에다 모두 test_를 붙이려면

for f in *.txt; do mv -n $f test_${f}; done


* 한줄에쓸땐 줄바꿈마다 ; 를 써줘야합니다.

* mv 옵션 -n 은 있는 화일에 덮어쓰지 못하게 하는 안전장치에요.

*이 팁은 korn이나 bash에서 동작하고 csh는 달라요



change_filename.png




번호 제목 작성자 작성일 조회
171 리눅스: 간편하게 날씨예보보기 [2] file 영진 06.06 6467
170 T전화 : 기본앱 대신 플레이스토어 앱으로 쓰기 그리고 두개가 뭐가 다른가. [2] 피델리티 06.02 6968
169 리눅스: GUI 바꾸기 [민트리눅스] [2] 영진 05.29 6644
» 리눅스: bash스크립팅 - 화일이름 일괄 바꾸기 [2] file 영진 05.22 6473
167 안드로이드 태블릿 기본적인 이해 및 테스트 방법론 (제1강) file 星夜舞人 05.20 6555
166 리눅스: 언어벤치마크 [4] file 영진 05.05 6690
165 리눅스: bash스크립팅: 간단한 통계내기 file 영진 03.31 6853
164 리눅스: vim: 설정하기 [1] file 영진 03.12 7075
163 리눅스: 생성일 기준으로 자동 파일 정리 스크립트 (초보) [3] file 건설노무자 02.22 4583
162 95LX에서 라즈베리 파이 접속하기. [6] file piloteer 02.04 4355
161 리눅스: 텍스트 브로우징을 이용하자 [3] file 영진 01.31 4208
160 리눅스: bash스크립팅 [3] file 영진 01.29 3631
159 미친척하고 비영리 Kickstarter 프로젝트 진행하기 (2편) [2] 星夜舞人 12.28 4089
158 미친척하고 비영리 Kickstarter 프로젝트 진행하기 (1편) 星夜舞人 12.28 3265
157 중국 저가 AP 7세대의 운명과 8세대의 향방 [7] 星夜舞人 12.10 1992
156 중국에서 구입한 갤럭시S6 갤럭시노트5 같은폰은 폰카의 셔트음이 무음으로 되나요, [9] 그린 11.25 2207
155 MEEP 태블릿 > 일반 태블릿으로 변경하기 [1] 제이티 10.18 4913
154 루팅 없이 통신사 좀비어플 비활성화 시키는 앱 [7] 페퍼민트 08.30 6230
153 CPU 세팅 어플 [1] 페퍼민트 08.26 4760
152 palm m500 롬 업그레이드 하기 [14] file jubilee 08.12 8378

오늘:
176
어제:
3,796
전체:
11,945,513