Při práci s Linuxem můžete narazit na některé nástroje a aplikace, které pracují pouze s názvy souborů, které neobsahují mezery. Ne vždy ukládáme soubory v tomto formátu „bez mezery“ a možná budeme muset hledat řešení, které nahradí mezery v názvech souborů znaky podtržení ‚_‘. Vaše názvy souborů tak nebudou obsahovat žádné mezery a můžete s nimi snadno pracovat ve všech aplikacích.
V tomto článku vám vysvětlíme dva způsoby, jak převést všechny mezery v názvech souborů na podtržítka, a to velmi jednoduše pomocí příkazového řádku.
Spustili jsme příkazy a postupy uvedené v tomto článku na systému Ubuntu 18.04 LTS.
Moje složka Stažené soubory, kterou použiji jako příklad pro tento článek, obsahuje mezery ve všech názvech souborů.
$ ls Downloads
Tuto složku použiji k vysvětlení, jak převádím názvy souborů do nového formátu.
Metoda 1:Prostřednictvím jediného příkazu mv
V této metodě použijeme příkaz Ubuntu mv ve smyčce for k přejmenování všech souborů/složek v daném adresáři tak, aby všechny mezery v jejich názvech byly nahrazeny znaky podtržení.
Otevřete příkazový řádek Ubuntu, Terminál, buď pomocí vyhledávání ve Spouštěči aplikací, nebo pomocí zkratky Ctrl+Alt+T.
Zde je syntaxe příkazu, který budete používat:
$ for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
Spustil jsem stejný příkaz k nahrazení mezer podtržítky ve složce Stažené soubory:
Když jsem znovu uvedl obsah adresáře, můžete vidět, že všechny názvy souborů nyní obsahují podtržítka namísto mezer.
Metoda 2:Použití skriptu k přejmenování souborů
V této metodě použijeme bash skript, který používá příkaz mv k přejmenování názvů souborů a složek tak, že všechny mezery budou nahrazeny podtržítky.
Otevřete aplikaci Terminál a přesuňte se do složky bin následovně:
$ cd ~bin
Nyní otevřete nový soubor skriptu v jednom z vašich oblíbených textových editorů. Použijeme nano editor k otevření prázdného souboru skriptu s názvem replace_spaces.sh
$ sudo nano replace_spaces.sh
Do tohoto prázdného souboru přidejte následující skript:
#!/bin/bash for f in * do new="${f// /_}" if [ "$new" != "$f" ] then if [ -e "$new" ] then echo not renaming \""$f"\" because \""$new"\" already exists else echo moving "$f" to "$new" mv "$f" "$new" fi fi done
Tip: Místo psaní celého skriptu do bash souboru jej můžete zkopírovat odtud a vložit do Terminálu pomocí Ctrl+Shift+V nebo pomocí možnosti Vložit z nabídky po kliknutí pravým tlačítkem.
Takto bude váš soubor vypadat:
Nyní ukončete soubor pomocí klávesové zkratky Ctrl+X a uložte soubor na "Uložit upravenou vyrovnávací paměť?" zadejte Y a poté stiskněte Enter.
Chcete-li z tohoto souboru vytvořit spustitelný skript, spusťte ve svém terminálu následující příkaz:
$ sudo chmod +x replace_spaces.sh
Nyní jste připraveni použít skript v kterékoli ze svých složek.
Když spustím skript v mé ukázkové složce Stažené soubory, vidím všechny mezery v názvech souborů převedené na podtržítka takto:
Takže toto byly dva způsoby, kterými můžete přejmenovat soubory tak, aby všechny mezery v jejich názvech byly převedeny na podtržítka. Nyní žádná aplikace, kterou používáte, nebude selhat při rozpoznání názvů souborů obsahujících mezery.