Přejmenování souborů je jedním z nejzákladnějších úkolů, které často musíte provádět v systému Linux. Soubory můžete přejmenovat pomocí správce souborů GUI nebo pomocí terminálu příkazového řádku.
Přejmenování jednoho souboru je snadné, ale přejmenování více souborů najednou může být problém, zejména pro uživatele, kteří s Linuxem začínají.
V tomto tutoriálu vám ukážeme, jak používat mv
a rename
příkazy k přejmenování souborů a adresářů.
Přejmenování souborů pomocí mv
Příkaz #
mv
příkaz (short of move) se používá k přejmenování nebo přesunutí souborů z jednoho umístění do druhého. Syntaxe pro mv
příkaz je následující:
mv [OPTIONS] source destination
source
může být jeden nebo více souborů nebo adresářů a destination
může být jeden soubor nebo adresář.
- Pokud jako
source
zadáte více souborů ,destination
musí být adresář. V tomto případěsource
soubory se přesunou do cílového adresáře. - Pokud jako
source
určíte jeden soubor adestination
cíl je existující adresář, pak se soubor přesune do zadaného adresáře. - Chcete-li přejmenovat soubor, musíte jako
source
zadat jeden soubor a jeden soubor jakodestination
cíl.
Chcete-li například přejmenovat soubor file1.txt
jako file2.txt
běželi byste:
mv file1.txt file2.txt
Přejmenování více souborů pomocí mv
Příkaz #
mv
příkaz může přejmenovat pouze jeden soubor najednou, ale lze jej použít ve spojení s jinými příkazy, jako je find
nebo uvnitř bash for
nebo while
smyčky pro přejmenování více souborů.
Následující příklad ukazuje, jak použít smyčku Bash for k přejmenování všech .html
soubory v aktuálním adresáři změnou .html
rozšíření na .php
.
for f in *.html; do
mv -- "$f" "${f%.html}.php"
done
Pojďme analyzovat kód řádek po řádku:
- První řádek vytváří
for
smyčka a iteruje seznamem všech souborů ohraničených.html
. - Druhý řádek se vztahuje na každou položku seznamu a přesune soubor do nového, který nahradí
.html
s.php
. Část${file%.html}
používá parametr shell expanze k odstranění.html
část z názvu souboru. done
označuje konec segmentu smyčky.
Zde je příklad použití mv
v kombinaci s find
dosáhnout stejného jako výše:
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;
find
příkaz předává všechny soubory končící na .html
v aktuálním adresáři do mv
jeden po druhém pomocí -exec
volba. Řetězec {}
je název aktuálně zpracovávaného souboru.
Jak můžete vidět z příkladů výše, přejmenování více souborů pomocí mv
příkaz není snadný úkol, protože vyžaduje dobrou znalost skriptování v Bash.
Přejmenování souborů pomocí rename
Příkaz #
rename
příkaz se používá k přejmenování více souborů. Tento příkaz je pokročilejší než mv
protože to vyžaduje určité základní znalosti regulárních výrazů.
Existují dvě verze rename
příkaz s jinou syntaxí. V tomto tutoriálu budeme používat verzi rename
v Perlu příkaz. Pokud tuto verzi na svém systému nainstalovanou nemáte, můžete ji snadno nainstalovat pomocí správce balíčků vaší distribuce.
-
Nainstalujte
rename
na Ubuntu a Debianusudo apt install rename
-
Nainstalujte
rename
na CentOS a Fedořesudo yum install prename
-
Nainstalujte
rename
na Arch Linuxyay perl-rename ## or yaourt -S perl-rename
Syntaxe pro rename
příkaz je následující:
rename [OPTIONS] perlexpr files
rename
příkaz přejmenuje files
podle zadaného perlexpr
regulární výraz. Více o regulárních výrazech perlu si můžete přečíst zde.
Následující příklad změní všechny soubory s příponou .html
na .php
:
rename 's/.html/.php/' \*.html
Můžete použít -n
možnost vytisknout názvy souborů, které mají být přejmenovány, bez jejich přejmenování.
rename -n 's/.html/.php/' \*.html
Výstup bude vypadat nějak takto:
rename(file-90.html, file-90.php)
rename(file-91.html, file-91.php)
rename(file-92.html, file-92.php)
rename(file-93.html, file-93.php)
rename(file-94.html, file-94.php)
Ve výchozím nastavení rename
příkaz nepřepíše existující soubory. Předejte -f
možnost povolit přepsání existujících souborů:
rename -f 's/.html/.php/' \*.html
Níže je několik běžných příkladů použití rename
příkaz:
-
Nahraďte mezery v názvech souborů podtržítky
rename 'y/ /\_/' \*
-
Převést názvy souborů na malá písmena
rename 'y/A-Z/a-z/' \*
-
Převést názvy souborů na velká písmena
rename 'y/a-z/A-Z/' \*
Závěr č.
Ukázali jsme vám, jak používat mv
a rename
příkazy k přejmenování souborů.
V Linuxu existují také další příkazy pro přejmenování souborů, například mmv
. Noví uživatelé Linuxu, kteří jsou zastrašováni příkazovým řádkem, mohou používat nástroje pro hromadné přejmenování GUI, jako je například Métamorphose.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.