Uma maneira simples seria usar o comando mmv :
mmv '*.pdf' '#1_0.pdf'
Você pode precisar instalá-lo primeiro (disponível no repositório Universe):
sudo apt-get install mmv
Eu quero copiar todos os arquivos *.pdf para *_0.pdf
Como posso fazer isso?
Uma maneira simples seria usar o comando mmv :
mmv '*.pdf' '#1_0.pdf'
Você pode precisar instalá-lo primeiro (disponível no repositório Universe):
sudo apt-get install mmv
com rename ( prename ):
rename -n 's/\.pdf$/_0$&/' *.pdf
\.pdf$ corresponde .pdf ao final do nome do arquivo _0 : _0$&
-n para ação real Com a expansão do parâmetro bash :
for f in *.pdf; do pre="${f%.pdf}"; echo mv -- "$f" "${pre}_0.pdf"; done
pre="${f%.pdf}" salva a parte do nome do arquivo antes de .pdf como variável pre
enquanto mv -ing _0.pdf é anexado a $pre : ${pre}_0.pdf
solte echo para ação real
Exemplo:
% rename -n 's/\.pdf$/_0$&/' *.pdf
rename(egg.pdf, egg_0.pdf)
rename(spam.pdf, spam_0.pdf)
% for f in *.pdf; do pre="${f%.pdf}"; echo mv -- "$f" "${pre}_0.pdf"; done
mv -- egg.pdf egg_0.pdf
mv -- spam.pdf spam_0.pdf
Você deseja renomear ou copiar?
Para renomear, você pode usar o emacs:
M-x wdired-change-to-wdired-mode
M-x query-replace para substituir '.pdf' por '_0.pdf' C-x C-s para salvar o buffer Você deseja renomear ou copiar os arquivos?
Para ambos, você pode simplesmente usar um loop for e mv (mover, também renomear) ou cp (copiar):
for i in *.pdf; do mv "$i" "${i/%.pdf/_0.pdf}"; done
ou melhor
for i in *.pdf; do cp "$i" "${i/%.pdf/_0.pdf}"; done
As aspas são necessárias apenas se (um dos) arquivos contiverem espaços.
Explicação rápida: ${i/%.pdf/_0.pdf} pega a variável i e substitui “.pdf” por “_0.pdf” se ela for encontrada no final da string (daí % ). Leia mais sobre as incríveis superpotências de bash aqui .
No shell rename irá ajudá-lo:
rename .pdf _0.pdf *.pdf
Execute o comando no diretório com os arquivos pdf.
Se você tiver os arquivos dentro dos diretórios e quiser encontrar todos eles e substituir:
find . -iname "*.pdf" | fgrep -v _0.pdf | xargs -n1 echo rename .pdf _0.pdf
Tags command-line rename copy