Os curingas não farão isso. Veja o resultado de echo mv 1* 2*
. A melhor maneira é ( man rename
):
rename 's/^1/2/' 1*
Percebi que havia nomeado um monte de arquivos de maneira desmembrada, então queria renomear qualquer arquivo começando com "1" para a mesma coisa, exceto começando com 2.
Por exemplo, mv 1.4.5.txt 2.4.5.txt
ou mv 1-chart.jpg 2-chart.jpg
etc.
Eu tentei mv 1* 2*
, mas isso não foi aceito porque interpreta 2*
como um diretório.
Os curingas não farão isso. Veja o resultado de echo mv 1* 2*
. A melhor maneira é ( man rename
):
rename 's/^1/2/' 1*
Você pode usar curingas dessa maneira se instalar mmv
(embora eles devam ser citados - para que eles sejam interpretados por mmv
em vez de pelo shell), e o curinga substituto assume o formato #n
para substitua novamente o caractere curinga n th do padrão:
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.
Então, por exemplo
$ 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
(A opção -n
permite que você execute um dry-run - remova-o para realmente renomear os arquivos.)