파일명 변경하는 스크립트 하나만 만들어 주세요.....

moonrepeat의 이미지

다름이 아니고 현재 moniwiki를 euc-kr로 사용 중인데 이번 기회에 utf-8로 변경할 예정입니다.

그래서 텍스트 파일 내용은 utf-8로 변경하였는데 파일명은 변경을 못하겠네요......

(euc-kr) 이렇게 되어 있는 파일명을 :_B0_A1_B3_AA_B4_D9
(utf-8) 이런 식으로 변경하는 :_EA_B0_80_EB_82_98_EB_8B_A4

스크립트 좀 만들어 주세요 아니면 힌트라도..... perl은 하나도 할 줄 모르고
bash 스크립트는 개미 눈꼽만끔 알고 있습니다. 그래서 기왕이면 bash로.......

부탁드립니다.

hmmhoho의 이미지

즉 aa(euc-kr).txt 를 aa(utf-8).txt 이런 식으로 변경하는 시크립트를 원하시는 건지요?

e^(pi*i) + 1 = 0 이 얼마나 아름다운 공식인가?!

moonrepeat의 이미지

제가 원하는것은 그게 아니고
파일명이 url방식으로 되어 있는데("%"대신 "_"으로 되어 있음)
풀어보면 euc-kr 방식입니다. 이걸 utf-8방식을 가지는 url 방식의 파일명으로 변경 하고 싶습니다.

삽질은 계속되어야 한다....... 쭉.........

aero의 이미지

Perl 스크립트 입니다.
_B0_A1_B3_AA_B4_D9 같은 파일들이 있는 최상위 디렉토리에서 실행하세요.
실행시킨 디렉토리를 기준으로 하위디렉토리 모두 뒤져서 _[HEX]_ 패턴으로
시작하는 파일들을 원하시는 규칙으로 rename 해줍니다.

#!/usr/bin/env perl
use strict;
use warnings;
use Encode qw/encode decode/;
use File::Find;
 
find( { wanted=>\&change, no_chdir=>0 } , './' );
 
sub change {
    if ( -f $_ && $_ =~ /^_[\da-fA-F]{2}_/ ) {
        my $name = $_;
        $name =~ s/_//g;
        $name = encode('utf8',decode('euc-kr', pack('H*',$name)));
        $name = unpack 'H*',$name;
        $name = '_' . uc( join '_', $name =~ m/../g );
        rename $_, $name;
    }
}

moonrepeat의 이미지

음..... 안되는 군요......
그대로 복사해서 실행 했는데 파일명이 전혀 변하지 않습니다.......

삽질은 계속되어야 한다....... 쭉.........

aero의 이미지

.
.
.
.
.

aero@doc:~/tmp/test$ find .
.
./ren.pl
./ttt
./ttt/_B0_A1_B3_AA_B4_D9
./_B0_A1_B3_AA_B4_D9
 
aero@doc:~/tmp/test$ perl ren.pl
 
aero@doc:~/tmp/test$ find .
.
./_EA_B0_80_EB_82_98_EB_8B_A4
./ren.pl
./ttt
./ttt/_EA_B0_80_EB_82_98_EB_8B_A4

이걸 원하시는 것 아니셨나요?

moonrepeat의 이미지

죄송합니다 제가 착각 했습니다.
특수문자를 포함한 파일명을 제외하고는 정상적으로 변환한 것 같습니다.

삽질은 계속되어야 한다....... 쭉.........

aero의 이미지

그럼 _B0_A1_B3_AA_B4_D9 이런 _[HEX] 패턴과 일반 ASCII문자열이 섞여있는 경우도 있다는 말씀인가요?

ABC가-나 란 파일명의 변환된 파일명이 ABC_B0_A1-_B3_AA 이런식이라면
A_BC가-나 라는 파일이 있다면 A_BC_B0_A1-_B3_AA 가 될텐데
이런 경우 역변환이 제대로 되나요?

moonrepeat의 이미지

죄송합니다 오늘은 밤이 늦어서 자야 할 것 같습니다.
내일 확인 후 답변 달겠습니다.

삽질은 계속되어야 한다....... 쭉.........

엠브리오의 이미지

파일이 몇개나 되는지는 모르겠습니다만

samba를 이용해서 바꾸시는것도 한가지 방법이 되겠습니다.

euc_kr로 파일 이름이 되어 있는 리눅스 서버에 samba셋팅을 해놓고
Windows쪽에 파일을 복사해 두었다가 samba 셋팅을 utf8로 바꿔서
restart 한 다음 리눅스 samba 서버쪽으로 다시 복사하면 될것 같군요.

다만 euc_kr과 utf8이 섞여 있지 않다는 전제조건이 필요하겠습니다.

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.