Portál AbcLinuxu, 16. července 2025 20:19


Dotaz: Script pro hromadné přejmenování v podsložkách

pepe_ avatar 30.10.2013 20:09 pepe_ | skóre: 48
Script pro hromadné přejmenování v podsložkách
Přečteno: 320×
Odpovědět | Admin

Potřebuji přejmenovat cca 50k fotek na názvy s jen velkými písmeny jenomže mám spousty fotek duplicitně se stejným názvem ale například příponou Jpg JPG jpg .

 

Netuším jak zabezpečit kontrolu například MD5 , srovnat název a vymazat duplikáty a potom vše přejmenovat například na velká písmena.

 

Samozřejmě že si to předem zazálohuju ale jak to vlastně udělat  mne nenapadá.


Ř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

30.10.2013 20:43 marek_hb
Rozbalit Rozbalit vše Re: Script pro hromadné přejmenování v podsložkách
Odpovědět | | Sbalit | Link | Blokovat | Admin
nezvládne to krename?
pepe_ avatar 1.11.2013 22:30 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Script pro hromadné přejmenování v podsložkách

1.) se po pár tisících souborech kousne

2.) po troškách to dělat nebudu...

30.10.2013 20:58 mhepp | skóre: 22
Rozbalit Rozbalit vše Re: Script pro hromadné přejmenování v podsložkách
Odpovědět | | Sbalit | Link | Blokovat | Admin
Začal bych tím, že bych si vygeneroval soubor, který bude obsahovat md5 součty a jéno souboru:
find . -exec md5sum "{}" \; | sort > /tmp/soucty
Potom můžeš vzít všechny duplicitní md5-ky, vyhledat soubory, kterým patří a vždy zahodit první řádek u stejných md5 součtů:
cat /tmp/soucty | awk '{print $1}' | uniq -d | while read i; do 
  grep $i /tmp/soucty | tail -n +2; 
done | sed -e 's/^[^ ]* //'
Tím dostaneš všechny soubory, které jsou na smazání... A přidáním za předchozí příkaz tohoto:
 | while read j; do rm "$j"; done
tyto duplicitní soubory smažeš.

No a to přejmenování... Pokud chceš přejmenovat pouze soubory, tak bych to viděl takhle:
find . | while read j; do 
  bn=`basename $j`; 
  dn=`dirname $j`; 
  mv $j $dn/`echo $bn | awk '{print toupper($0);}'`; 
done
pepe_ avatar 1.11.2013 22:29 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Script pro hromadné přejmenování v podsložkách

Děkuji , vyzkouším ...

pepe_ avatar 2.11.2013 13:50 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Script pro hromadné přejmenování v podsložkách

Tak nějak nefunguje hledání duplicitních MD5

obsah toho SOUCTY je asi takto :

 

aa52583ed1e3896d0d97e7829ee323ad  ./Jani/FFF/kotatko/2-cs-a3be901e855b7c4b7ac21d932d4bf1de.jpg
aa52583ed1e3896d0d97e7829ee323ad  ./Jani/FFF/8/2-cs-a3be901e855b7c4b7ac21d932d4bf1de.jpg
aa557ae0dc8f02e58214a6dd70148534  ./fotoobrazky vsichni/AnO/p168.jpg
aa557ae0dc8f02e58214a6dd70148534  ./fotoobrazky vsichni/FFF Pepi/s Pepcou/f33.jpg
aa557ae0dc8f02e58214a6dd70148534  ./fotoobrazky vsichni/FFF Pepi/s Pepcou/5-cs-31f7a7299f84e682046f280dbaaec43c.jpg
aa557ae0dc8f02e58214a6dd70148534  ./fotoobrazky vsichni/fotoobr/f33.jpg
aa557ae0dc8f02e58214a6dd70148534  ./sporic/5-cs-31f7a7299f84e682046f280dbaaec43c.jpg


kdyz pouziju

cat /tmp/soucty | awk '{print $1}' | uniq -d | while read i; do 
  grep $i /tmp/soucty | tail -n +2; 
done | sed -e 's/^[^ ]* //'


tak to vypise spousty tisic souboru co nejsou duplicitni.

Kde je chyba ve vyhledavani duplicit ?

2.11.2013 18:47 NN
Rozbalit Rozbalit vše Re: Script pro hromadné přejmenování v podsložkách
Funguje dobre, uniq -d najde duplicitni md5-ky a tail -n +2 vyselektuje z grepu vsechny nalezy bez prvniho, sed ve finale uz jen vyplivne ciste cesty. Otestuj si to na mensim objemu dat.
2.11.2013 23:27 mhepp | skóre: 22
Rozbalit Rozbalit vše Re: Script pro hromadné přejmenování v podsložkách
Když uložíš do soubory /tmp/soucty ty řádky, co máš v příkladu a spustíš ten cat..., tak by to mělo vypsat toto:
./Jani/FFF/8/2-cs-a3be901e855b7c4b7ac21d932d4bf1de.jpg
./fotoobrazky vsichni/FFF Pepi/s Pepcou/f33.jpg
./fotoobrazky vsichni/FFF Pepi/s Pepcou/5-cs-31f7a7299f84e682046f280dbaaec43c.jpg
./fotoobrazky vsichni/fotoobr/f33.jpg
./sporic/5-cs-31f7a7299f84e682046f280dbaaec43c.jpg
Tyto soubory jsou na smazání, protože jsou to duplicity.

(v seznamu chybí ./Jani/FFF/kotatko/2-cs-a3be901e855b7c4b7ac21d932d4bf1de.jpg a ./fotoobrazky vsichni/AnO/p168.jpg)

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.