Portál AbcLinuxu, 10. května 2025 16:18
/home/admin/neco-neco.www.neco.txt
na
/home/admin/neco-neco.neco.txt
Tedy zbavit se "www.".
Díky
Řešení dotazu:
rename
Da sa to aj cisto v bash-i a inych shelloch tiez isto. V bash-i by to mohlo byt aj nasledovne a mozno aj jednoduchsie (aj ked rychlost nebude mozno ozdobou tohto riesenia pri velkych objemoch :) ):
cesta='path/admin' string='.www' maska='^.*-.*\.www\..*\.txt$' for file in "$cesta"/* do if [[ -f "$file" && -w "$file" ]] then if [[ "$file" =~ $maska ]] then mv "${BASH_REMATCH[0]}" "${BASH_REMATCH[0]/$string}" fi fi done
No zrovna cisto v bash-i to nie je skrz pouzitia mv. Tak kludne ostan pri rename, ak ti to vyhovuje. :)
Tak odniekal to musi ist. :D Na tom nie je nic zlozite. Sa vezme kazdy subor (subor, adresar, link, atd ) na zadanom umiestneni (premenna cesta), otestuje sa, ci je to skutocne subor a ci mame opravnenie na zapis. Nasledne sa overi, ci nazov suhlasi s nasim vzorcom (premenna maska ) a ak ano, tak sa odstrani nezelany retazec ( premenna string ).
for filename in aws*; do newname=`echo $filename | sed 's/\.www//g'`; mv $filename $newname; done
Volat sed v tomto pripade je zbytocne, bo to je riadny kanon na tak jednoduchu vec.Ono to ide aj takto, teda pokial to moze byt bash alebo iny shell, ktory podporuje manipulaciu s retazcami na premennych. (Nechce sa mi teraz hladat, ci a ci nie je to aj v bourne shell a inych ) A nezabudni, ze dvojite uvodzovky neuskodia okolo dpremennych s nazvami suborov, inak to moze dopadnut inak nez by si si zelal.
for filename in aws*; do mv "$filename" "${filename/\.www}"; done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.