V jiných prostředích operačního systému je vytváření a používání názvů souborů s mezerami neodvolatelně přípustné. Když však vstoupíme do domény operačního systému Linux, existence takových názvů souborů se stává nepříjemností.
Zvažte například existenci následujících názvů souborů v prostředí operačního systému Linux.
Podle zobrazení těchto názvů souborů z příkazového řádku se jejich zpracování nebo přesouvání stává neopodstatněnou nepříjemností kvůli mezerám v jejich pojmenování.
Kromě toho jsou mezery mezi názvy souborů v Linuxu nevýhodou pro uživatele, kteří je zpracovávají prostřednictvím webových aplikací jako řetězec %20
bývá součástí zpracovaného/finálního souboru.
Tento článek se zabývá platnými přístupy, které vám pomohou zbavit se mezer v názvech souborů při práci v prostředí operačního systému Linux.
Předpoklad
Seznamte se s používáním terminálu Linux nebo rozhraní příkazového řádku. Pro praktické referenční účely budeme používat názvy souborů s mezerami uvedené na následujícím snímku obrazovky.
1. Odebrání mezer z názvu souboru s konkrétní příponou souboru
Příkaz find je kombinován s příkazem mv, aby efektivně provedl svůj funkční cíl odstranit mezery v názvu souboru se specifickou příponou souboru, např. .xml
soubory.
$ find . -type f -name "* *.xml" -exec bash -c 'mv "$0" "${0// /_}"' {} \;
2. Nahrazení mezer názvů souborů pomocí příkazu rename
Případně místo použití najít s mv příkazy ke sledování a nahrazení mezer mezi názvy souborů, mohli bychom použít jediné přejmenování command, což je perlové rozšíření a lze jej nainstalovat do následujících distribucí operačního systému Linux:
$ sudo apt install rename [On Debian, Ubuntu and Mint] $ sudo yum install rename [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/rename [On Gentoo Linux] $ sudo pacman -S rename [On Arch Linux] $ sudo zypper install rename [On OpenSUSE]
Po instalaci přejmenujte příkaz lze použít následujícím způsobem:
$ rename 's/\s/_/g' ./*.xml
Výše uvedený příkaz nahradí mezery ve všech .xml
soubory s podtržítkem. Chcete-li nahradit všechny mezery ve všech názvech souborů bez ohledu na příponu souboru, použijte:
$ rename 's/\s/_/g' ./*.*
3. Nahrazení mezer názvů souborů pomocí příkazu For Loop a mv
Tento přístup je účinný při odstraňování mezer mezi názvy souborů v různých formátech názvů souborů existujících v konkrétní/cílové složce/adresáři. smyčka for funkce se dotáže na mezery mezi názvy souborů v cílovém adresáři/složce a poté tyto mezery mezi názvy souborů nahradí podtržítkem.
Zvažte následující implementaci tohoto přístupu:
$ for f in *; do mv "$f" `echo $f | tr ' ' '_'`; done
Před začátkem tohoto článku byly mezery mezi názvy obtíží, zvláště když potřebujete kopírovat a přesouvat soubory z terminálu Linux nebo je zpracovávat prostřednictvím webového programu. Tento tutoriál poskytuje životaschopné řešení, které proti takovým nepříjemnostem funguje.