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 proforsmyčka. Vzor*X*vybere všechny soubory sXv 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ýskytystrjsou nahrazenynew_str.