Řešení využívající find
:
Chcete-li přejmenovat pouze soubory :
find /your/target/path/ -type f -exec rename 's/special/regular/' '{}' \;
Chcete-li přejmenovat pouze adresáře :
find /your/target/path/ -type d -execdir rename 's/special/regular/' '{}' \+
Chcete-li přejmenovat soubory i adresáře :
find /your/target/path/ -execdir rename 's/special/regular/' '{}' \+
Pokud vám nevadí nainstalovat další nástroj, můžete použít rnm:
rnm -rs '/special/regular/g' -dp -1 *
Projde všechny adresáře/podadresáře (kvůli -dp -1
) a nahraďte speciální s pravidelným v jejich jménech.
Odpověď @speakr pro mě byla vodítkem.
Pokud používáte -execdir k transformaci souborů i adresářů, budete také chtít odstranit -type f
z uvedeného příkladu. Chcete-li to napsat, použijte:
find /your/target/path/ -execdir rename 's/special/regular/' '{}' \+
Zvažte také přidání g
(globální) příznak k regulárnímu výrazu, pokud chcete nahradit vše výskytů special
s regular
v daném souboru a nejen v prvním výskytu. Například:
find /your/target/path/ -execdir rename 's/special/regular/g' '{}' \+
transformuje special-special.jpg
na regular-regular.jpg
. Bez globálního příznaku skončíte s regular-special.jpg
.
Pro informaci:GNU Rename není ve výchozím nastavení na Mac OSX nainstalováno. Pokud používáte správce balíčků Homebrew, brew install rename
to napraví.
Zkuste to udělat (vyžadovat bash --version
>=4):
shopt -s globstar
rename -n 's/special/regular/' **
Odstraňte -n
přepněte, když jsou vaše testy v pořádku
Existují další nástroje se stejným názvem, které to mohou nebo nemusí umět, takže buďte opatrní.
Pokud spustíte následující příkaz (GNU
)
$ file "$(readlink -f "$(type -p rename)")"
a máte výsledek jako
.../rename: Perl script, ASCII text executable
a neobsahující:
ELF
pak se zdá, že toto je ten správný nástroj =)
Pokud ne, nastavte jej jako výchozí (obvykle již platí) na Debian
a odvozeniny jako Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
(nahraďte /path/to/rename
na cestu vašeho perl's rename
příkaz.
Pokud tento příkaz nemáte, vyhledejte ve správci balíčků a nainstalujte jej nebo to proveďte ručně
V neposlední řadě tento nástroj původně napsal Larry Wall, otec Perlu.