Eu tinha um grupo de arquivos que gostaria de renomear de forma consistente. Os arquivos são nomeados como
"System-Log-01-01-2009-NODATA.txt"
"Something-Log-01-01-2009-NODATA.txt"
E eu os queria como minúsculas, aaaammdd, extensão .log
"system.20090101.log"
"something.20090101.log"
mmv
, mas, eventualmente, graças arename
eu posso usar o poder de regexperl-rename
.Desde que eu não tenho um comando de renomeação, estou contando com isso:
fonte
O mmv é um utilitário linux padrão para mover / renomear vários arquivos. Está disponível nos repositórios para a maioria das distribuições. Para o seu exemplo acima, você pode fazer:
Para mais informações, leia este artigo de debaday ou a página de manual .
fonte
rename
util não é muito "padrão". Cada distribuição é fornecida com umarename
ferramenta diferente . Por exemplo, aqui no Gentoo,rename
é dosys-apps/util-linux
pacote e não suporta regex.Hamish Downer sugeriu
mmv
, parece útil, especialmente para uso em scripts.Por outro lado, para o caso geral, você pode querer renomear . Possui
qmv
eqcp
comandos, que abrirão um editor de texto de sua escolha (minha preferência: Vim) e permitirão editar os nomes de arquivos de destino lá. Depois de salvar e fechar o editor,qmv
/qcp
fará toda a renomeação.Ambos
mmv
eqmv
são suficientes inteligente para renomear arquivos em ordem correta e também para detectar renomeações circulares, e fará automaticamente um arquivo temporário, se necessário.fonte
sys-apps/rename
pacote, que fornece arenamexm
renomeação de regex, além de massas maiúsculas / minúsculas e outras coisas interessantes.Para ser justo:
dá esta saída:
Mas:
rename -n 's/(\w+)-\w+-(\d{2})-(\d{2})-(\d{4})-NODATA\.txt$/$1.$4$3$2\.log/' *.txt && rename 'y/A-Z/a-z/' System.20090101.log
fornece a saída correta:
substituindo a opção {-n} por {-v}
fonte
Eu criei um pequeno script bash para fazer isso:
fonte
ls
saída não é a melhor ideia. Uma pesquisa aleatória fez essa leitura demorada no Unix. SE para sua diversão. | Além disso, sua resposta corresponderia melhor à pergunta com umtr '[:upper:]' '[:lower:]'