Uniknout z prostoru, např. Spring\ 2011
, nebo použijte uvozovky, např. 'Spring 2011'
. V budoucnu je obvykle špatný nápad používat názvy souborů s mezerami na jakémkoli *NIXu.
Pokud máte rename
, můžete použít toto:
rename ' ' '_' [filenames...]
Pokud má váš počítač příkaz rename, změní se tím všechny mezery na podtržítka ve všech souborech/adresářích v aktuálním pracovním adresáři:
rename 's/ /_/g' *
Pokud nemáte rename
nebo raději použijte pouze shell:
for f in *\ *; do mv "$f" "${f// /_}"; done
Rozbité:
*\ *
vybere všechny soubory s mezerou v názvu jako vstup profor
smyčka. Vzor*X*
vybere všechny soubory sX
v jejich jménu a pro prostor speciálních znaků jej musíme escapovat lomítkem, aby to bash nepovažoval za oddělení různých argumentů.- Uvozovky kolem
"$f"
jsou důležité, protože víme, že v názvu souboru je mezera a jinak by se to zobrazilo jako 2+ argumenty promv
. ${f//str/new_str}
je funkce substituce řetězců specifická pro bash. Všechny výskytystr
jsou nahrazenynew_str
.