Como renomear arquivos em um diretório como o seguinte arquivo PMC21375.pdf.txt
:, preciso renomear 21375.txt
. ou seja, preciso remover os dois PMC
e pdf
de cada nome de arquivo.
10
rename 's/(PMC|\.pdf)//g' *pdf.txt
Demo:
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
a partir do shell
prompt. É muito útil, você pode colocar algum código perl como eu faço em uma substituição.
Você pode remover o -n
(interruptor do modo de funcionamento a seco) quando seus testes se tornarem válidos.
Existem outras ferramentas com o mesmo nome que podem ou não conseguir fazer isso, portanto, tenha cuidado.
Se você executar o seguinte comando ( linux
)
$ file $(readlink -f $(type -p rename))
e você tem um resultado como
.../rename: Perl script, ASCII text executable
então esta parece ser a ferramenta correta =)
Caso contrário, para torná-lo o padrão (geralmente já é o caso) Debian
e derivado como Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
(substitua /path/to/rename
pelo caminho do seu perl's rename
comando.
Por último, mas não menos importante, essa ferramenta foi originalmente escrita por Larry Wall, o pai do Perl.
.pdf
nome do arquivo.Além do comando rename, você pode fazê-lo diretamente no bash (apenas uma maneira de várias):
Editado para mostrar a Pinyaka como funciona:
fonte
.pdf
o nome do arquivo.Existem vários utilitários para renomear arquivos, mas um dos mais fáceis de usar é
rename
. No seu caso, você provavelmente pode:O primeiro parâmetro é a parte do nome do arquivo a ser substituído. O segundo parâmetro é a sequência de substituição. Aqui estou usando
''
para representar a string vazia. Todos os parâmetros a seguir são arquivos para renomear, aqui eu costumava*txt
limitar a substituição aos arquivos de texto.rename
já deve estar presente se você estiver executando o Linux. Se você estiver executando um * BSD ou OS X, talvez seja necessário instalá-lo primeiro.fonte
rename
. Há umutil-linux
e outroperl
com sintaxe diferente. O que você está se referindo se parece com o doutil-linux
às vezes chamadorename.ul
para não confundir com orename
doperl
, enquanto em outros sistemasrename
é o do util-linux e o doperl
é chamadoprename
.rename 's/PMC// *.txt
e #rename s/\.pdf// *.txt
Primeiro faça um backup dos seus arquivos! Basicamente, você pode usar um liner python no diretório atual com o formato geral:
no seu caso específico, você pode usar isso duas vezes:
para remover
.pdf
e novamente:remover
PMC
.fonte
Tente o seguinte:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done
Os
j=${i//\.pdf/}
meios para substituir.pdf
em$i
com nada. Da mesma forma, com a segunda tarefa j se livrando do PMC.fonte
Se você estiver usando
zsh
, esse é um trabalho típico parazmv
:(
zmv
lida com possíveis conflitos normalmente).fonte