2010-12-10 8 views
3

linuxファイルの名前を、Windowsで合法的なファイル名に変更したいとします。許可された長さより長くするべきではなく、ウィンドウ内で許可されていない文字を持つべきではありません。時々私は、ファイル名の論文からタイトルをコピーして、彼らは、そのような®などの特殊文字を持っている、または?linuxファイル名をWindowsで合法的な新しいファイル名に名前を変更する

はまた、文字のいくつかの種類は、ラインの両端に、時にはそこにあるされてからタイトルをコピーして貼り付けたときに発生しますpdf 「L」-n sedを使用しているときは、それらを見ることができます。

echo 'Estrogen receptor agonists and estrogen attenuate TNF-α induced 
α 
apoptosis in VSC4.1 motoneurons.pdf' | sed -n 'l' 
Estrogen receptor agonists and estrogen attenuate TNF-\316\261 induce\ 
d$ 
\316\261$ 
apoptosis in VSC4.1 motoneurons.pdf$ 

または

echo 'A synthetic review of the five molecular Sorlie’s subtypes in 
breast cancer' | sed -n 'l' 
A synthetic review of the \357\254\201ve molecular Sorlie\342\200\231\ 
s subtypes in$ 
breast cancer$ 

私は、スクリプトを開始しているが、それは、エレガントかつ不完全ではありません。誰かがすでにこのようなことをやったことがありますか、それを行うための高速エレガントな方法はありますか?

fn2win="$1" 
testFn=$(echo "$fn2win" | sed -n 'l') 
#SPEC_CHAR="ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞàáâãäåçèéêëìíîïðñòóôõöøùúûüýþÿ" 
#NORM_CHAR="AAAAAACEEEEIIIIDNOOOOOOUUUUYPaaaaaaceeeeiiiionoooooouuuuyby" 
#SPEC_LOW_CHAR="aàáâãäåāăąbḃcćçčĉċdḑďḋđeèéěêëēĕęėfḟƒgǵģǧĝğġǥhĥħiìíîĩïīĭįıjĵkḱķǩlĺļľłmṁnńņňñoòóôõöōŏøpṗqrŕŗřsśşšŝṡſtţťṫŧuùúûũüůūŭųvwẁẃŵẅxyỳýŷÿzźžż" 
#NORM_LOW_CHAR="aaaaaaaaaabbccccccdddddeeeeeeeeeefffgggggggghhhiiiiiiiiiijjkkkklllllmmnnnnnoooooooooppqrrrrssssssstttttuuuuuuuuuuvwwwwwxyyyyyzzzz" 
#SPEC_CAP_CHAR="AÀÁÂÃÄÅĀĂĄBḂCĆÇČĈĊDḐĎḊĐEÈÉĚÊËĒĔĘĖFḞGǴĢǦĜĞĠǤHĤĦIÌÍÎĨÏĪĬĮİJĴKḰĶǨĸLĹĻĽŁMṀNŃŅŇÑOÒÓÔÕÖŌŎØPṖQRŔŖŘSŚŞŠŜṠTŢŤṪŦUÙÚÛŨÜŮŪŬŲVWẀẂŴẄXYỲÝŶŸZŹŽŻ" 
#SPEC_CAP_CHAR="AAAAAAAAAABBCCCCCCDDDDDEEEEEEEEEEFFGGGGGGGGHHHIIIIIIIIIIJJKKKKKLLLLLMMNNNNNOOOOOOOOOPPQRRRRSSSSSSTTTTTUUUUUUUUUUVWWWWWXYYYYYZZZZ" 
#sed -e "y/'$SPEC_CHAR'/'$NORM_CHAR'/" 
if [ "$fn2win" != "$testFn" ]; then 
    newLinFn=$(echo "$fn2win" | fromdos | tr "\n" " " |\ 
    sed -e " 
    s/[?()\[\]=+<>:;©®”,*|]/_/g 
    s/"$'\t'"/ /g 
    s/–/-/g 
    s/’/'/g 
    s/α/alpha/g 
    s/β/beta/g 
    s/µ/micro/g 
    s/Æ/AE/g 
    s/Ǽ/AE/g 
    s/æ/ae/g 
    s/ǽ/ae/g 
    s/DZ/DZ/g 
    s/DŽ/DZ/g 
    s/Dž/Dz/g 
    s/Dz/Dz/g 
    s/dz/dz/g 
    s/dž/dz/g 
    s/ff/ff/g 
    s/fi/fi/g 
    s/fl/fl/g 
    s/ffi/ffi/g 
    s/ffl/ffl/g 
    s/ſt/ft/g 
    s/IJ/IJ/g 
    s/ij/ij/g 
    s/LJ/LJ/g 
    s/Lj/Lj/g 
    s/lj/lj/g 
    s/NJ/NJ/g 
    s/Nj/Nj/g 
    s/nj/nj/g 
    s/Œ/OE/g 
    s/œ/oe/g 
    s/ß/SZ/g 
    s/\"/_/g 
    s/[[:cntrl:]]/_/g 
    s/\ $//g 
    " |\ 
    fold -s -w 251 | head -1 | sed 's/\ $/.pdf/') 
    if [ "$fn2win" != "$newLinFn" ]; then 
     mv "$fn2win" "$newLinFn" 
    fi 
fi 
winFn=$(echo "z:"$newLinFn | sed 's/\//\\/g') 
+0

、私は近くに投票がこの –

+0

にあった、なぜ誰かが、おそらく一緒に糸引きと感じていたかわかりませんsed操作の束は、プログラミング上の使用法よりも使用上の問題のように見えます。議論の余地のある立場です。 –

+0

ありがとうございます。私はこれができることができる便利な機能だと思います。私はワインを通して機能を強調表示するためにPDF-XChange Viewerを使用する必要があり、これはそのためには便利です。私は、他の研究者が確信しているように、何百もの論文を見て、強調しているので、誰かがこの問題に遭遇したに違いありません。この質問をする適切な場所はどこですか? –

答えて

1

それはそれを行う必要がありますようにこれが見えます:私はこれはオフトピックだとは思わないhttp://pwet.fr/man/linux/commandes/konwert

+0

これは私がしようとしていることでうまくいくかどうかは分かりませんが、エンコーディングを変換するようですが、わたしの目的には明らかな変換が見られません。 –

+0

asciiに変換するとほとんどの方法が利用でき、処理するハードコーディングされたコンバージョンの数が制限されます。 – OliJG

+0

+1 'konwert utf8-ascii'は有用であり、少なくとも国際的な文字を取り除き、合字を別々の文字に変換します。 'konwert utf8-tex'はまた、αのようなギリシャの記号を\ alphaに変換するので興味深い。 –

関連する問題