J'ai réalisé que j'avais nommé un groupe de fichiers de manière différente, alors je voulais renommer n'importe quel fichier commençant par "1" par la même chose, à l'exception de 2.
Par exemple, mv 1.4.5.txt 2.4.5.txt
ou mv 1-chart.jpg 2-chart.jpg
etc.
J'ai essayé mv 1* 2*
mais cela n'a pas été accepté car il interprète 2*
comme un répertoire.
Les wildcards ne le feront pas. Regardez le résultat de echo mv 1* 2*
. Une meilleure façon est (man rename
):
rename 's/^1/2/' 1*
Vous pouvez utiliser des caractères génériques de cette manière si vous installez mmv
(bien qu'ils doivent être cités - de sorte qu'ils soient interprétés par mmv
lui-même plutôt que par le shell), et le caractère générique de remplacement prend la forme #n
pour remplacer le nth joker du motif:
Usage: mmv [-m|x|r|c|o|a|l] [-h] [-d|p] [-g|t] [-v|n] [from to]
Use #[l|u]N in the ``to'' pattern to get the [lowercase|uppercase of the]
string matched by the N'th ``from'' pattern wildcard.
A ``from'' pattern containing wildcards should be quoted when given
on the command line. Also you may need to quote ``to'' pattern.
Use -- as the end of options.
Donc par exemple
$ mmv -n -- '1*' 2#1
1.sh -> 2.sh : delete old 2.sh? n
1-chart.jpg -> 2-chart.jpg
1.4.5.txt -> 2.4.5.txt
1.csv -> 2.csv
(L'option -n
vous permet d'effectuer un essai à blanc - supprimez-le pour renommer les fichiers.)