하부 디렉토리 포함 파일명 일괄 변경할 수 있는 쉘스크립트 질
글쓴이: milchcow / 작성시간: 화, 2005/10/25 - 11:10오전
안녕하세요.
리눅스 초짜인 젖소라고 합니다.
오늘 위에서 프로젝트 명이 바꼈다고 서버에 있는 파일명을 일괄 변환하라고 하더군요.
현재 프로젝트명이 K2입니다.
그래서 보통 파일들이 *K2* 이런식의 구조로 되어 있습니다.
요번에 프로젝트명이 T7로 바뀌면서 디렉토리 및 파일들을 전부 *T7*형식으로 변환하라고 하더군요.ㅠ_ㅠ
여기 글 검색해보니 현재 폴더 내에 있는 파일에 대한 변환은 있는데 하부 파일들까지 변환해줄 수 있는 스크립트는 못 찾겠더군요. 거기다가 하부 폴더를 찾아서 모두 탐색하는 루틴만 추가하면 될 것 같은데 감이 잘 안옵니다. 고수님들의 많은 도움 부탁드립니다.
아 참고로 아래 검색한 글에서 현재 폴 내에 있는 파일 이름 변환하는 스크립트는 다음과 같습니다.
ls | sed "s/\(.*\)K2\(.*\)/mv '&' '\1T7\2' /" |sh
Forums:
ls -R 해보세요.
저런 스크립트를 만들어 쓰실 정도면 모르실리 없을 텐데.. :?
2개로 짜면 쉬워요.스크립트1:현재디렉토리의 모든 디렉토리와 파일
2개로 짜면 쉬워요.
스크립트1:현재디렉토리의 모든 디렉토리와 파일의 이름을 바꾼다. -maxdepth 1
스크립트2:디렉토리 1 depth 들어가서 스크립트 1을 실행하고 자신을 반복한다.
https://xenosi.de/
해보니 안됩니다.ㅠ_ㅠ
kz님 ls -R로 하면 문제가 하나 생깁니다.ㅠㅠ
예를 들어서
현재 폴더에 asdfK2adsf란 파일과 K2asdf라는 폴더가 있습니다.
그리고 K2asdf 폴더 내에는 K2test파일이 있습니다.
그럴 경우 ls -R이라고 입력하면
.:
K2asdf asdfK2adsf
./K2asdf
K2test
이렇게 5줄이 나옵니다.
그리고 ls -R | sed "s/\(.*\)K2\(.*\)/mv '&' '\1T7\2' /" |sh 실행하면 K2asdf 폴더와 asdfK2adsf 파일은 제대로 변경이 됩니다. 그러나 K2test의 경우 현재 폴더내에 K2test라는 파일이 없기 때문에 "그런 파일이나 디렉토리가 없습니다"라고 에러 메시지가 뜨게 됩니다. 제 생각대로 아무래도 디렉토리를 이동하면서 명령어를 실행시키는 방식으로 해야할 것 같습니다.(만약 현재 디렉토리에서 변경한다고 한다면 이미 K2asdf 폴더가 T7asdf로 변경되었기 때문에 이 또한 말썽입니다.ㅠ_ㅠ)
사실 됐으면 했는데.ㅠ_ㅠ이론.
[code:1]$ find . -type d -name "*
rename tool이 있어야 합니다.^^
아니면 만드셔도 되고요.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
find 한번에 하부디렉토리명을 모두 바꿀 수 없습니다.디렉토리명이
find 한번에 하부디렉토리명을 모두 바꿀 수 없습니다.
디렉토리명이 바뀌면, 그 다음은 디렉토리가 없다는 오류메세지가 나오게 됩니다.
gentoo.or.kr wiki GnomeLocale 에 euckr 을 utf8 로 고치는 스크립트를 올려두었는데,
위에 적은 스크립트 2개로 구현한 것입니다.
https://xenosi.de/
[quote="송효진"]find 한번에 하부디렉토리명을 모두 바꿀 수 없
그렇군요 :oops:
이건 안될까요?
안되는군요 ㅜ.ㅠ
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
[quote="fehead"][code:1]$ find . -type
위에걸로 짜보니 송효진님 말씀처럼 바로 아래단계까지만 변경이 되네요.(일단 송효진님 말씀따라 gentoo linux에 가봤는데 어딘지는 못 찾고 있습니다.-_-;;)
질문은 딴거.-_-;;
제 컴에서 rename K2 T7 *는 동작을 하는데 rename 's/K2/T7' *는 왜 동작을 안하는건가요?ㅠ_ㅠ
[quote="fehead"][quote="송효진"]find 한번에 하부
그것도 해봤는데 안됩니다.ㅠ_ㅠ 그나마 되던 바로 하위 폴더명도 안바뀝니다.ㅠ_ㅠ
테스트해봐서 성공 했습니다.[code:1]find . -typ
테스트해봐서 성공 했습니다.
아래건 테스트 안해 봤지만 될것 같습니다.^^
약간 수정.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
[quote="fehead"]테스트해봐서 성공 했습니다.[code
이상하게 제 컴에서는 rename뒤에 인수를 '' 식으로 넣어주면 동작을 안합니다.ㅠ_ㅠ
어떻게 딴 해결법은 없을까요?
[url]http://www.gentoo.or.kr/wiki/moin.c
http://www.gentoo.or.kr/wiki/moin.cgi/GnomeLocale#head-af49f10fde6be82205bcf5ef5cab7d39f3042179
https://xenosi.de/
지금 보니까 기본 rename 은 정규식이 지원 안되고,rename
지금 보니까 기본 rename 은 정규식이 지원 안되고,
rename 만 패키지가 따로 또 있군요.
이건 정규식 지원 되네요.
https://xenosi.de/
[quote="milchcow"][quote="fehead"]테스트해봐서
무식한 방법입니다. ㅡㅡ;
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기