Sto cercando di trovare alcuni file con il nome "stringx" e sostituire il nome (ma non l'estensione) con "stringy". Quindi, fondamentalmente per stringx.txt e stingx.cs, vorrei stringy.txt e stringy.cs. Ho tentato di testare il mio comando di ridenominazione regex usando il seguente, ma non restituisce risultati:
rename -n 'stringx./s/*$stringy.//' stringx.*
Sto eseguendo csh sotto Centos. Posso vedere che la mia espressione regolare probabilmente non è corretta, ma non riesco a vedere alcun risultato per verificarlo. Vedo che ci sono file chiamati stringx. con quanto segue:
find ./ -name 'stringx.*'
Risposta accettata:
rename stringx stringy stringx.*
Esistono (almeno) due utilità chiamate rename
sui tipici sistemi Linux. Debian e le distribuzioni derivate (incluso Ubuntu) forniscono uno script Perl la cui sintassi sarebbe
rename 's/stringx/stringy/' stringx.*
Su altre distribuzioni, incluso CentOS, rename
proviene da util-linux e la sua sintassi è quella che ho scritto sopra. Questa utilità è disponibile con il nome rename.ul
su Debian e derivati.
Se vuoi ricorrere in sottodirectory, supponendo che per csh intendi tcsh (ma in realtà, pensa di entrare nella metà degli anni '90 e passare a zsh):
set globstar
rename stringx stringy stringx.* **/stringx.*