Se sua distribuição usa (ou oferece) a versão perl de renomeação (o Debian e a maioria dos derivados):
cd mydir
rename 's/\.([^.]+)$/-bar.$1/
Eu sei algumas distribuições (não me lembro qual foi) oferece como prename
.
Eu tenho um diretório ~/mydir/
com muitos arquivos. Alguns desses arquivos são
~/mydir/foo.py
~/mydir/foo.tex
~/mydir/foo.pdf
~/mydir/foo.log
Gostaria de alterar qualquer arquivo em ~/mydir/
cujo nome base seja foo
to foo-bar
. Então, os arquivos acima devem ser renomeados como
~/mydir/foo-bar.py
~/mydir/foo-bar.tex
~/mydir/foo-bar.pdf
~/mydir/foo-bar.log
Não estou preocupado com os novos nomes de arquivos em conflito com os arquivos existentes ( $ ls ~/mydir/foo-bar*
não retorna nada).
Parece que isso deve ser fácil de fazer no bash, mas não consigo entender.
Existe um script simples para realizar essa tarefa?
Se sua distribuição usa (ou oferece) a versão perl de renomeação (o Debian e a maioria dos derivados):
cd mydir
rename 's/\.([^.]+)$/-bar.$1/
Eu sei algumas distribuições (não me lembro qual foi) oferece como prename
.
Isso pode ser feito com mv
:
for name in ./foo*; do mv "$name" "${name/foo/foo-bar}"; done
Por exemplo:
[devuser@machine test]$ touch foo.log foo.pdf foo.tex foo.py
[devuser@machine test]$ ls
foo.log foo.pdf foo.py foo.tex
[devuser@machine test]$ for name in ./foo*; do mv "$name" "${name/foo/foo-bar}"; done
[devuser@machine test]$ ls
foo-bar.log foo-bar.pdf foo-bar.py foo-bar.tex
Tags rename