Snažím se najít určité soubory s názvem „stringx“ a nahradit název (ale ne příponu) „stringy“. Takže v podstatě pro stringx.txt a stingx.cs bych chtěl stringy.txt a stringy.cs. Pokusil jsem se otestovat svůj regulární výraz příkazu pro přejmenování pomocí následujícího, ale nevrací žádné výsledky:
rename -n 'stringx./s/*$stringy.//' stringx.*
Provozuji csh pod Centos. Vidím, že můj regulární výraz pravděpodobně není správný, ale nevidím žádné výsledky, které by to mohly ověřit. Vidím, že existují soubory s názvem stringx. s následujícím:
find ./ -name 'stringx.*'
Přijatá odpověď:
rename stringx stringy stringx.*
Existují (alespoň) dva nástroje zvané rename
na typických systémech Linux. Debian a odvozené distribuce (včetně Ubuntu) dodávají skript v Perlu, jehož syntaxe by byla
rename 's/stringx/stringy/' stringx.*
U jiných distribucí, včetně CentOS, rename
je z util-linux a jeho syntaxe je to, co jsem napsal výše. Tento nástroj je dostupný pod názvem rename.ul
na Debianu a jeho derivátech.
Pokud chcete rekurzovat v podadresářích, za předpokladu, že csh máte na mysli tcsh (ale opravdu si vzpomeňte na vstup do poloviny 90. let a přechod na zsh):
set globstar
rename stringx stringy stringx.* **/stringx.*