Portál AbcLinuxu, 10. května 2025 04:45
for i in *html; do a=${i%.html}; mkdir "$a"; mv $a* "$a"; #tady je problém donev $a může být řetězec třeba "technická specifikace A7Z46" a v aktuálním adreáři je několik souborů s tímhle názvem a různými příponami (obrázky, schemata, dokumenty, etc.). Potřebuju je všechny přesunout do podadresáře s příslušným jménem. Bash provede u mv expanzi, ale už z toho neudělá uzavřené parametry (neudělá si okolo toho "uvozovky"), takže mv to dostane rozporcovaný po mezerách a ne po ucelených názvech. Vím že by to šlo udělat spoustou metod (xarxgs, znovuvnoření cyklu for jako na začátku, skrz hashe, nebo něco na ten způsob), ale mě zajímá, jestli se dá bash donutit, aby to po expanzi i správně tokenizoval, resp. udělat řešení, se kterým by si bez externích utilit (xargs) poradil i obyčejný sh (vylučuje např. ty hashe). dík za tipy, -m.
mv $a* "$a"nejsou ani mezery, ale to, že se snaží přesunout $a sám do sebe, což nejde. Pokud ty věci k přesunutí mají vždy nějaké přípony, tak například
mv "$a".* "$a"
kterej pro mě žádnej problém (krom chybový hlášky o tom, že to nejde) v běhu skriptu nezpůsobujeCo na to říci. Snad jen, že přeji spoustu zábavy se skripty, které se ‚najednou začaly chovat divně‘...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.