J'essaie de trouver certains fichiers avec le nom "stringx" et de remplacer le nom (mais pas l'extension) par "stringy". Donc, fondamentalement, pour stringx.txt et stingx.cs, je voudrais stringy.txt et stringy.cs. J'ai essayé de tester ma regex de commande de renommage en utilisant ce qui suit, mais cela ne renvoie aucun résultat :
rename -n 'stringx./s/*$stringy.//' stringx.*
J'utilise csh sous Centos. Je peux voir que mon regex n'est probablement pas correct, mais je ne vois aucun résultat pour le vérifier. Je peux voir qu'il existe des fichiers nommés stringx. avec ce qui suit :
find ./ -name 'stringx.*'
Réponse acceptée :
rename stringx stringy stringx.*
Il existe (au moins) deux utilitaires appelés rename
sur les systèmes Linux typiques. Debian et les distributions dérivées (y compris Ubuntu) embarquent un script Perl dont la syntaxe serait
rename 's/stringx/stringy/' stringx.*
Sur d'autres distributions, y compris CentOS, rename
est de util-linux, et sa syntaxe est ce que j'ai écrit ci-dessus. Cet utilitaire est disponible sous le nom rename.ul
sur Debian et ses dérivés.
Si vous voulez faire une récurrence dans les sous-répertoires, en supposant que par csh vous entendez tcsh (mais vraiment, pensez à entrer au milieu des années 1990 et à passer à zsh) :
set globstar
rename stringx stringy stringx.* **/stringx.*