Portál AbcLinuxu, 5. května 2025 03:06

Dotaz: Perl-převod na velké písmena

20.6.2019 07:35 Petr70
Perl-převod na velké písmena
Přečteno: 387×
Odpovědět | Admin
Zdravím všechny, potřeboval bych samozřejmě pomoc. Mám větší množství záloh v adresáři a podadresářích typu zaloha-r01.zip, zaloha-r02.zip atd, potřeboval bych kvůli čitelnosti přejmenovat tyto zálohy hromadně na velké písmena, takto ZALOHA-R01.zip, ZALOHA-R02.zip . Bohužel se mně to hromadně nedaří. :(

Tento příkaz přejmenuje správně pouze v aktuálním adresáři
perl -e 's/\.[^\.]*$/rename $_, uc($`) . $&/e for @ARGV' *.zip
Ve scriptu bash už nefunguje.
find /mnt/sdb/dilna -maxdepth 5   -name *r*.zip  | while read smycka 
do
find /mnt/sdb/dilna -maxdepth 5   -name *r*.zip  | head -n 1  | perl -e 's/\.[^\.]*$/rename $_, uc($`) . $&/e for @ARGV' *.zip
done
echo "konec velkých písmen"

Toto přejmenuje vše na velké písmena, včetně koncovky .zip což nechci.
perl -nle 'rename $_, uc'
ale ve scriptu mně to stejně nejde, jenom v terminálu viz
find  /mnt/sdb/dilna  -maxdepth 5   -name *r*.zip  | head -n 1  | perl -nle 'rename $_, uc'

Doufám že jsem to napsal správně a moc děkuji odborníkům za pomoc, bohužel perl neznám a bash málo.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.6.2019 11:18 sad
Rozbalit Rozbalit vše Re: Perl-převod na velké písmena
Odpovědět | | Sbalit | Link | Blokovat | Admin
Shell ani Perl moc neumím, nicméně v Ruby to přejmenování jde udělat docela snadno, ale pro jistotu si udělej zálohu.
require 'find'

mydir = "/home/petr70/zalohazalohy"

Find.find(mydir) do |path|
  unless File.directory? path
    dir, f = File.split(path)    
    fa = f.split(".")	
    File.rename(path, dir+"/"+fa[0].upcase+"."+fa[1])
  end
end 
20.6.2019 12:24 uf
Rozbalit Rozbalit vše Re: Perl-převod na velké písmena
Odpovědět | | Sbalit | Link | Blokovat | Admin

Možná třeba tak:

find * -type f | rename 's/([^\/]*)((z|Z)(i|I)(p|P))$/\U\1\L\2/'

Ale radši si to někde nejdřív vyzkoušej a nezapomeň si před tím udělat zálohu.

20.6.2019 12:27 uf
Rozbalit Rozbalit vše Re: Perl-převod na velké písmena
Čitelnější ...:
find * -type f | rename 's/([^\/]*)((z|Z)(i|I)(p|P))$/\U\1\L\2/'
20.6.2019 12:32 uf
Rozbalit Rozbalit vše Re: Perl-převod na velké písmena
Jo a - pusť to v adresáři, kde ti začínají ty soubory, nebo doplň cestu do findu místo "*"!
23.6.2019 15:26 Petr70
Rozbalit Rozbalit vše Re: Perl-převod na velké písmena
Odpovědět | | Sbalit | Link | Blokovat | Admin
Děkuji.

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.