Portál AbcLinuxu, 9. května 2025 17:41
Dobrý den,
potřebuji hromadně přejmenovávat soubory tohoto typu Medailon.aspx@IDMember=123456 a pak je načíst pomocí cat a přes tr je spojuji do jedné řádky a upravuji–vykousávám v sed-u, dělám to pod Cygwinem. S rename se mi moc nedaří, pomůže někdo?
Díky všem předem!
jsk
Obavam se, ze nepomuze. Ja treba z popisu naprosto nechapu, co se ma s temi nazvy souboru udelat, natoz co se na tom nedari.
Asi jsem to trochu zmotal, soubory s názvem jako je tento Medailon.aspx@IDMember=123456 potřebuji dál upravovat, to umím (tak trochu), ale problém je formát názvu souboru, kdyby se to jmenovalo 123456.html pak už si s tím poradím.
Díky!
jsk
Z toho pořád není jasné, čeho chcete docílit, ale snad se trefím.
Pro zpracování názvu můžete zase použít třeba ten sed:
old='Medailon.aspx@IDMember=123456' new=$( echo "$old" | sed 's/\([^@]*\)@\([^=]*\)=\(.*\)/--\1--\2--\3--/' ) mv $old $new
Pro jistotu ještě vysvětlím ten výraz použitý v sedu:
1:(ne-zavináč libovolně-krát) @ 2:(ne-rovnítko libovolně-krát) = 3:(cokoliv libovolně-krát)
A proc je to problem? Mozna je lepsi opravit chyby ve zbytku skriptu, kde se zrejme nespravne pracuje s nazvem souboru, nez ten soubor prejmenovavat.
ls *=* | while read A; do B=`echo $A|cut -d= -f2`; mv "$A" "$B".html; done
- vezme soubory s '=' uprostred jako A
- ke kazdemu vezme cast za prvnim '=' jako B
- prejmenuje A na B.html
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.