포터블기기 강좌


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

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


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




번호 제목 작성자 작성일 조회
201 PostmarketOS: `진짜`리눅스 스마트폰을 구하는 법. [2] piloteer 02.07 41988
200 리눅스민트: 화면분할해서 윈도우배치하기 영진 02.05 40347
199 안드로이드 -> 아이폰 이전시 주의할 점 [1] matsal 11.22 41275
198 리눅스: 구글tts를 이용하기 [1] 영진 10.01 40669
197 리눅스민트 : 구글드라이브 연동하기 2 영진 09.23 40452
196 리눅스: 쉽고 빠른 백업은 없을까? [3] 영진 09.16 9065
195 xfce4에서 generic monitor활용 (막대그래프) file 영진 02.12 8950
194 리눅스: xfce4데스크탑에서 원하는 정보만 표시하기 [1] file 영진 02.05 8860
193 해피해킹키보드 흉내내기 (리눅스) [1] 영진 12.03 9165
192 리눅스민트: 네모액션으로 구글드라이브 연동 [2] file 영진 04.11 9277
191 구글킵 이용하기 [5] file 영진 04.06 9579
190 리눅스: 어학공부를 위한 mp3 플레이어 [2] 영진 01.18 9244
189 리눅스민트: 구글캘린더 연결하기 [1] file 영진 12.19 9513
188 리눅스 : 음성타이머를 만들어보자 [2] 영진 12.08 9155
187 리눅스데스크탑: 구글드라이브로 백업하기 [1] 영진 11.21 8868
186 리눅스데스크탑: 오늘의 인용문 표시하기 영진 10.19 8851
185 리눅스 데스트탑 : i3wm [2] 영진 10.17 8988
184 시내먼 데스크탑: 비트코인 티커 만들기 (초간단) [1] 영진 10.01 8808
183 윈도에서 간단하게 배터리 수명 알아보기 [3] matsal 05.10 9418
182 USB Type-C 케이블과 USB 3.2 그래픽 출력단자 [2] matsal 01.01 12837

오늘:
701
어제:
908
전체:
15,194,627