1.jpg 2.jpg 3.jpg 4.jpg 5.jpg
이 파일 있다고 치면..
001.jpg 002.jpg 003.jpg 004.jpg 005.jpg
이렇게 파일의 이름을 한꺼번에 지정해서 자동으로 변환시켜줄수있는지요? 터미널에서 어떻게 쳐야 하는가요??
for i in [0-9]*.jpg; do fd=${i%.*}; tag=${i##*.}; fe=$(printf "%03d" ${fd}); mv ${i} ${fe}.${tag}; done
또는
for i in [0-9]*.jpg; do fe=$(printf "%03d.%s" ${i/./ }); mv ${i} ${fe}; done
放下着----- 내려놓으려는 마음도 내려놓기
아님 스크립트로 만들어야 합니까?
밑의 지리즈님의 말씀은 electuz님이나 지리즈님의 경우는 중간의 건너뛰는 번호(소위 이빠진 것)가 있거나, 번호가 10이 넘어가도 상관없는데, 검은해님의 방법은 문제가 있지 않느냐하는 의도인 것 같네염.
for i in [0-9]*.jpg; do mv ${i} $(printf "%03d.%s" ${i/./ }); done
노련한 해커라면 make를, 유능한 관리자라면 shell script를 사용하다고 하던데..
내공이 빈약한 관계로 무식하게 가겠습니다.
ls -1 | sed "s/\./ /g" | awk '{ printf("mv %d.%s %03d.%s\n" ,$1,$2,$1,$2)}'
sed명령으로 닷(.)을 점으로 쪼겠고, awk의 printf문을 이용해서 명령을 맞췄습니다.
위를 실행해서 문제가 없어보이면, 아래로 실행을 시키면 됩니다.
ls -1 | sed "s/\./ /g" | awk '{ printf("mv %d.%s %03d.%s\n" ,$1,$2,$1,$2)}' | sh
주의) 만약 파일명이 닷이 두개 이상이 있을 경우 sed에 있는 정규화표현식을 좀 복잡하게 꾸며야 할 듯 합니다.
There is no spoon. Neo from the Matrix 1999.
for X in `seq 3` ; do mv $X.jpg 00$X.jpg ; done
필요에 따라 seq -w도 사용합니다. 간단하죠? :) ``는 ''가 아니라 backtick입니다.
이가 빠진게 있거나 10보다 커지면 어떻하죠?
사실 이빠진거야 오류나고 지나치면 되지만... ㅋㅋ
for X in `seq 1 9` ; do echo 00$X ; done for X in `seq -w 11 100` ; do echo $X ; done
이런 식으로 해결 가능합니다.
참, bash나 sh 외의 셸을 사용하신다면 안 통할 수도 있습니다. 그럴 때는 bash를 수동으로 실행해주시면 문제 없을 것입니다.
rename "s/\d/00$&/" [0-9].jpg
질문하신 내용처럼 파일 이름이 10 미만일 경우는 위 명령으로도 충분하구요..
이렇게 하니 간단하고 쉽네요...:) 가르쳐주셔서 감사합니다.. 근데 make 로도 이게 가능한가요?? make 관련자료을 찾아봐야겠네요....:)
--------------------------------------------------------------------- 내 머리속에 rm -rf /
감비노도 궁금해하더라구..등짝!..등짝을보자!..
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
printf ..
for i in [0-9]*.jpg;
do
fd=${i%.*}; tag=${i##*.}; fe=$(printf "%03d" ${fd});
mv ${i} ${fe}.${tag};
done
또는
for i in [0-9]*.jpg;
do
fe=$(printf "%03d.%s" ${i/./ });
mv ${i} ${fe};
done
放下着-----
내려놓으려는 마음도 내려놓기
콘솔에서 쓰는 건가요
아님 스크립트로 만들어야 합니까?
밑의 지리즈님의
밑의 지리즈님의 말씀은
electuz님이나 지리즈님의 경우는 중간의 건너뛰는 번호(소위 이빠진 것)가 있거나, 번호가 10이 넘어가도 상관없는데,
검은해님의 방법은 문제가 있지 않느냐하는 의도인 것 같네염.
더 짧게..
for i in [0-9]*.jpg; do mv ${i} $(printf "%03d.%s" ${i/./ }); done
放下着-----
내려놓으려는 마음도 내려놓기
무식하게 한다면..
노련한 해커라면 make를,
유능한 관리자라면 shell script를 사용하다고 하던데..
내공이 빈약한 관계로 무식하게 가겠습니다.
ls -1 | sed "s/\./ /g" | awk '{ printf("mv %d.%s %03d.%s\n" ,$1,$2,$1,$2)}'
sed명령으로 닷(.)을 점으로 쪼겠고,
awk의 printf문을 이용해서 명령을 맞췄습니다.
위를 실행해서 문제가 없어보이면, 아래로 실행을 시키면 됩니다.
ls -1 | sed "s/\./ /g" | awk '{ printf("mv %d.%s %03d.%s\n" ,$1,$2,$1,$2)}' | sh
주의) 만약 파일명이 닷이 두개 이상이 있을 경우 sed에 있는 정규화표현식을 좀 복잡하게 꾸며야 할 듯 합니다.
There is no spoon. Neo from the Matrix 1999.
저는 이렇게
for X in `seq 3` ; do mv $X.jpg 00$X.jpg ; done
필요에 따라 seq -w도 사용합니다. 간단하죠? :) ``는 ''가 아니라 backtick입니다.
이 빠지면 어떻하죠? ^^
이가 빠진게 있거나 10보다 커지면 어떻하죠?
사실 이빠진거야 오류나고 지나치면 되지만... ㅋㅋ
There is no spoon. Neo from the Matrix 1999.
이 빠진 것이나 두자리 이상은..
for X in `seq 1 9` ; do echo 00$X ; done
for X in `seq -w 11 100` ; do echo $X ; done
이런 식으로 해결 가능합니다.
참, bash나 sh 외의 셸을 사용하신다면 안 통할 수도 있습니다. 그럴 때는 bash를 수동으로 실행해주시면 문제 없을 것입니다.
더 더 짧게..
rename "s/\d/00$&/" [0-9].jpg
질문하신 내용처럼 파일 이름이 10 미만일 경우는 위 명령으로도 충분하구요..
放下着-----
내려놓으려는 마음도 내려놓기
답변 감사합니다...이렇게 하니 쉽네요...
for X in `seq 3` ; do mv $X.jpg 00$X.jpg ; done
이렇게 하니 간단하고 쉽네요...:)
가르쳐주셔서 감사합니다..
근데 make 로도 이게 가능한가요??
make 관련자료을 찾아봐야겠네요....:)
---------------------------------------------------------------------
내 머리속에 rm -rf /
감비노도 궁금해하더라구..등짝!..등짝을보자!..
댓글 달기