[해결] 100개의 파일명을 한꺼번에 바꾸려면 무엇을 공부해야 하나요?

duoh5의 이미지

예를 들면 아래와 같은 파일리스트가 있습니다.

KBS 역사스페셜 제001회 [영상복원, 무용총 고구려가 살아난다](19981017).avi
KBS 역사스페셜 제002회 [고종의 X파일! 군함을 구입하라](19981024).avi
KBS 역사스페셜 제003회 [발해는 왜 동해를 건넜는가](19981107).avi
KBS 역사스페셜 제004회 [고구려군, 아차산 최후의날](19981114).avi
KBS 역사스페셜 제005회 [고려시대, 우리는 로켓을 쏘았다](19981121).avi
KBS 역사스페셜 제006회 [조선 최대 정치이벤트-화성회갑잔치](19981128).avi
KBS 역사스페셜 제007회 [한반도, 고인돌왕국의 수수께끼](19981208).avi
KBS 역사스페셜 제008회 [조선판 사랑과 영혼 - 400년전의 편지](19981212).avi
...............
KBS 역사스페셜 제100회 [천년전 벤처기업, 장보고의성공비결](20010127).avi

100개를 한꺼번에..
KBS.역사스페셜.001.avi
KBS.역사스페셜.002.avi
KBS.역사스페셜.100.avi -> 이렇게 바꾸고 싶은데..

무슨 명령어나 문법같은 걸 알아야 하나요?

ps. 질문이 부족한 것 같아서 일부 수정했습니다.
원래 작성했던 "***"이 오해의 소지가 있는 것 같네요.

답변 달아주셔서 고맙습니다.

jachin의 이미지

Bash 스크립트를 찾아보시기 바랍니다.

Advanced Bash Script Tutorial 을 보시길...
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

사랑천사의 이미지

음.. 전 _를 선호하는데 대부분 .을 선호하시는군요 동영상에는..
일단 tr과 for 등을 이용하시면 될 듯 합니다. 이게 될려나.. 아래와 같이..

for x in KBS*;
do
  mv "$x" `echo "$x"|tr " " "."`
done

요게 어떤 의미냐면.. tr은 우선 어떤 단어나 문자를 대상 문자나 단어로 교체 해 줍니다. mv는 보통 이름 바꿀 때도 씁니다. 그렇다면 mv로 원본 파일명을 주고 뒤에 echo로 원본 파일명을 파이프를 통해 tr에 넘기고 각 줄마다 전부 교체 작업을 해서 그 내용을 되돌려 줍니다 STDOUT로.. tr의 기본 입력은 STDIN이지만, 파일이나 파이프로 부터 받을 수도 있기 대문에 저렇게 한 것입니다. 출력 또한 마음 먹으면 조정이 가능하겠죠.

이런 식으로 해서 작업 하는 것이 아마 KLDP 위키의 CD 굽기에 대한 문서중 오디오 CD를 구울 때 어떻게 해야 하는지에 대한 내용이 기록 된 문서에 포함 되어 잇던거 같습니다. 잘은 기억이 안 나지만...

뭐 쉘 스크립트가 싫으시면 PHP나 Perl, C로도 하실 수 잇겠지만 쉘 스크립트로 하시는게 지금은 가장 간단하고 쉬우실 서 같군요.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
HomePage: http://lys.lecl.net:88/
Wiki(Read-Only): http://lys.lecl.net:88/wiki/
Blog: http://lys.lecl.net:88/blog
MSN: ysnglee2000@hotmail.com
----
절이 싫으면 중이 떠나는 것이 아니라, 절이 싫으면 중이 절을 부숴야 한다.
때때

사람천사

doodoo의 이미지

함...짜봤는데요...

일단 ... 현재 나와있는 리스트의

KBS 역사스페셜 제001회 [영상복원, 무용총 고구려가 살아난다](19981017).avi
KBS 역사스페셜 제002회 [고종의 X파일! 군함을 구입하라](19981024).avi
KBS 역사스페셜 제003회 [발해는 왜 동해를 건넜는가](19981107).avi
KBS 역사스페셜 제004회 [고구려군, 아차산 최후의날](19981114).avi
KBS 역사스페셜 제005회 [고려시대, 우리는 로켓을 쏘았다](19981121).avi
KBS 역사스페셜 제006회 [조선 최대 정치이벤트-화성회갑잔치](19981128).avi
KBS 역사스페셜 제007회 [한반도, 고인돌왕국의 수수께끼](19981208).avi
KBS 역사스페셜 제008회 [조선판 사랑과 영혼 - 400년전의 편지](19981212).avi

정도만으로 테스트 해 봐서 버그가 있을수 있습니다. (절대 책임 없습니다...ㅠㅠ)

#!/bin/sh
ls > tfile.txt
cc=1
while true; do
        file=`sed -n "$cc"p tfile.txt`
        test -z "$file" && exit
        echo "$file"
        target=`echo "$file" | sed 's/\(.*[0-9]\{3\}회\).*avi/\1/' \
                        | sed 's/\(.*[0-9]\{3\}\).*/\1.avi/'`
        echo "$target"
        #mv "$file" "$target"
        sleep 1
        cc=`expr $cc + 1`
done

mv 가 들어 있는 #은 그대로 막은 상태에서 한번 테스트 해 보시고
결과가 좋으면 #을 제거하시고 사용하시기 바랍니다...# 제거하실때 sleep 부분을
#으로 막으면 조금더 빠르겠죠...확인용으로 잠시 세운겁니다.

혹시 "회" 짜때문에 않됀다면 어쩔수가 없을것 같네요..
이 프로그램의 요점은 "회" 자 이거든요 ㅠㅜ

duoh5의 이미지

내용을 보고 열심히 공부를 해야겠네요.
쉘스크립트로도 가능하군요.

정말 고맙습니다. :-)

리눅스,.. 항상 느끼는 거지만 어려워요.. ㅡ.ㅡ;

송효진의 이미지

기본 rename 말고 rename 이라는 유틸이 있습니다.
이걸로 정규식으로 바꾸기 하면 한방입니다.

rename "s/제(\d+)화.*\.avi/\1.avi/g" *.avi

패키지 깔기 귀찮아서 해보지는 않았습니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~

Prentice의 이미지

seq와 for loop으로 아주 간단하게 해결이 가능합니다.

아래 코드를 참고해주세요.

for N in `seq -w 100`
do echo mv "KBS 역사스페셜 제${N}회*.avi" "KBS.역사스페셜.$N.avi"
done

잘 되겠다 싶으시면 echo는 빼고 실행하시면 됩니다. `는 backtick, Tab키 위에 있는 키입니다. 정말 편하지 않나요. ^_^

s.choi의 이미지

seq로 for문 100번 돌리는 건 쉽게 했었는데,
${N} 이 $N으로 바뀌어 질수 있다는건 몰랐는걸요?

앞으로 많이 응용해먹어야 겠습니다. ㅎㅎ~
감사~

duoh5의 이미지

일단 머리말에 [해결]이라고 붙여놓아야겠습니다.
답변 해주신 분들 모두 고맙습니다. 꾸벅. :-)

ps. 원래 100% 이해하고 머리말을 고치려고 했는데,
언급해 주신 문법을 제가 이해하려면 한참 걸리겠네요. ㅡ.ㅡ;

리눅스,.. 항상 느끼는 거지만 어려워요.. ㅡ.ㅡ;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.