Renomeie todos os arquivos “.pdf” para “_0.pdf” [duplicado]

10

Eu quero copiar todos os arquivos *.pdf para *_0.pdf

Como posso fazer isso?

    
por Jonas 07.08.2017 / 14:51

5 respostas

16

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
    
por sempaiscuba 07.08.2017 / 15:05
10

com rename ( prename ):

rename -n 's/\.pdf$/_0$&/' *.pdf
  • \.pdf$ corresponde .pdf ao final do nome do arquivo
  • na substituição, a correspondência é precedida por _0 : _0$&
  • solte -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
    
por heemayl 07.08.2017 / 14:57
3

Você deseja renomear ou copiar?

Para renomear, você pode usar o emacs:

  1. Abra o diretório pai como um buffer direcionado
  2. Digite M-x wdired-change-to-wdired-mode
  3. Use M-x query-replace para substituir '.pdf' por '_0.pdf'
  4. Digite C-x C-s para salvar o buffer
por asrhaerhawer 07.08.2017 / 19:18
1

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 .

    
por dessert 07.08.2017 / 21:26
-1

Arquivos de solução simples no mesmo diretório

No shell sh , rename irá ajudá-lo:

rename .pdf _0.pdf *.pdf

Execute o comando no diretório com os arquivos pdf.

Arquivos dentro do diretório recursivo

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

    
por Psycho 08.08.2017 / 00:16