Portál AbcLinuxu, 12. května 2025 11:06

Dotaz: Prejmenovavani souboru

20.5.2015 18:18 Michal Urban | skóre: 7
Prejmenovavani souboru
Přečteno: 377×
Odpovědět | Admin
Zdravim,

uz dva dny hledam a nedari se mi vyresit nasledujici problem. Mam v adresarove strukture eknihy, ktere bych chtel zbavit nestandardnich znaku. Hledam napr. nasledujici zmenu

Èarodìj-[01]-Èarodìjem-sobì-navzdory.pdb

Carodej-[01]-Carodejem-sobe-navzdory.pdb

Bohuzel i kdyz jsem narazil na dost "reseni" pres sed, iconv, tr atp., tak mi zadne nefungovalo. Nemeli byste tu nekdo jednoduche, funkcni a hotove reseni? Na to, jaka je to blbost, se s tim patlam uz desnou dobu ... :O

Diky za rady,

Michal

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Michal Urban (tazatel))
20.5.2015 19:12 Delaunay | skóre: 17 | blog:
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
for file in *; do mv -v $file `echo $file | iconv -f [KODOVÁNÍ NÁZVŮ SOUBORŮ] -t ASCII//TRANSLIT`; done
20.5.2015 22:35 Michal Urban | skóre: 7
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
Ok, diky moc! Tohle fungovalo docela dobre, skript, ktery jsem nejakym zazrakem stvoril, je zde:
#!/bin/bash
IFS='
'
find -type f | while read file
do
newfile=`echo $file | iconv -f [UTF-8] -t ASCII//TRANSLIT`
mv -v $file $newfile
done
Jenze tam bylo velke mnozstvi nazvu souboru se znaky typu ctvrtecek, sipka atp. (netusim proc), ktere byly nahrazeny otaznikem ... takze ted bych jeste potreboval vyresit, jak vymenit otazniky treba za X ... :)
20.5.2015 22:49 Michal Urban | skóre: 7
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
Zkusil jsem to udelat takhle:
#!/bin/bash
IFS='
'
find -type f | while read file
do
rename s/?/X $file
done
Ale neustale mi to vraci chybu "Substitution replacement not terminated at (eval 1) line 1." coz zrejme souvisi s chybnym nastavenim prikazu rename. Jestli nekdo vite, co s tim, tak se nebranim rade :), ale ted musim letet spat ... :D
20.5.2015 21:22 nobody
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebo pomoci convmv po doinstalovani, teda do 7bit ASCII to neumi, takze neoholi diakritiku, ale prevede ji...
# v Debian/Ubuntu/Mint:
sudo apt-get install convmv

# rekurzivne pouze otestovat jak by jmena prevadelo z windows 1250
convmv -r -f cp1250 -t utf8 *

# nebo z pc latin 2
convmv -r -f cp852 -t utf8 *

# nebo z iso latin 2
convmv -r -f iso-8859-2 -t utf8 *

# pokud ok, tak realne prevest (s tim spravnym -f codovanim)
convmv -r -f cp1250 -t utf8 --notest *
20.5.2015 22:08 Michal Urban | skóre: 7
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
Bohuzel:
michal@mobile-250gb /mount/dataspace/Downloads/TEMP/Stasheff, Christopher $ convmv -r -f cp1250 -t utf8 *Starting a dry run without changes...
Skipping, already UTF-8: ./Èarodìj-[00-08]-Uniková-rychlost.pdb
Skipping, already UTF-8: ./Èarodìj-[01]-Èarodìjem-sobì-navzdory.pdb
Skipping, already UTF-8: ./Èarodìj-[02]-Vzkøíšení-krále-skøeta.pdb
Skipping, already UTF-8: ./Èarodìj-[03]-Odpoutaný.pdb
No changes to your files done. Use --notest to finally rename the files.
michal@mobile-250gb /mount/dataspace/Downloads/TEMP/Stasheff, Christopher $ convmv -r -f cp852 -t utf8 *
Starting a dry run without changes...
Skipping, already UTF-8: ./Èarodìj-[00-08]-Uniková-rychlost.pdb
Skipping, already UTF-8: ./Èarodìj-[01]-Èarodìjem-sobì-navzdory.pdb
Skipping, already UTF-8: ./Èarodìj-[02]-Vzkøíšení-krále-skøeta.pdb
Skipping, already UTF-8: ./Èarodìj-[03]-Odpoutaný.pdb
No changes to your files done. Use --notest to finally rename the files.
michal@mobile-250gb /mount/dataspace/Downloads/TEMP/Stasheff, Christopher $ convmv -r -f iso-8859-2 -t utf8 *
Starting a dry run without changes...
Skipping, already UTF-8: ./Èarodìj-[00-08]-Uniková-rychlost.pdb
Skipping, already UTF-8: ./Èarodìj-[01]-Èarodìjem-sobì-navzdory.pdb
Skipping, already UTF-8: ./Èarodìj-[02]-Vzkøíšení-krále-skøeta.pdb
Skipping, already UTF-8: ./Èarodìj-[03]-Odpoutaný.pdb
No changes to your files done. Use --notest to finally rename the files.

20.5.2015 22:45 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
Tо vypadá jako následek vybalení nějakého archivu, pak se někdy stává, že se kódování poplete. Teď už jsou názvy v UTF-8, není je proto kam převádět. Nejjednodušší bude vyrobit si převodní tabulku a překládat názvy přеs ni:
STARE="Èìø"
NOVE="Čěř"
find . -type f | while read file; do
  path="${file%/*}"
  oldfile="${file##*/}"
  newfile="$(<<<"$oldfile" | tr "$STARE" "$NOVE")"
  if [ "$oldfile" != "$newfile" ]; then
    echo mv "$path/$file" "$path/$newfile"
  fi
done
Pokud to pojede, tak stačí dát echo pryč. V dalším kroku je potřeba obdobně přejmenovat adresáře, ale nechce se mi to vymýšlet. Tam už to jeden find nespraví a bude potřeba rekurzivně procházet skriptem adresářovou strukturou, v aktuálním adresáři všechny podadresáře přejmenovat a sestoupit o úroveň hlouběji.
Josef Kufner avatar 20.5.2015 23:14 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
      --nosmart
           by default convmv will detect if a filename is already UTF8 encoded and will skip this file if conversion from
           some charset to UTF8 should be performed.  "--nosmart" will also force conversion to UTF-8 for such files, which
           might result in "double encoded UTF-8" (see section below).

       --fixdouble
           using the "--fixdouble" option convmv does only convert files which will still be UTF-8 encoded after
           conversion. That's useful for fixing double-encoded UTF-8 files. All files which are not UTF-8 or will not
           result in UTF-8 after conversion will not be touched. Also see chapter "How to undo double UTF-8 ..."  below.

Hello world ! Segmentation fault (core dumped)
20.5.2015 23:44 Lubos Kopecky | skóre: 32
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
v mc F6 a napis novy nazev
21.5.2015 12:01 Michal Urban | skóre: 7
Rozbalit Rozbalit vše Re: Prejmenovavani souboru
To s tim carodejem byl jen priklad. (Viz v textu hlasky "Mam v adresarove strukture eknihy" a "Hledam napr. nasledujici zmenu"). Tech souboru je nekolik tisic. Kvuli jednomu souboru bych nepsal skript. :D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.