Então, digamos, eu tenho um diretório com vários arquivos como g.txt, em que o g.txt foi modificado pela última vez em, por exemplo, 20 de junho de 2012.
Como renomear em lote todos os arquivos (como g.txt) com a data da última modificação de 20 de junho de 2012 anexada ao final?
date
implementação é essa? Meu GNUdate
não parece lidar com entrada.aqui está uma versão do one-liner de goldschrafe que:
também lida com nomes de arquivos começando com um hífen
for f in *; do mv -- "$f" "$f-$(date -r "$f" +%Y%m%d)"; done
fonte
date -r "$f" +%Y%m%d
ou não funcionará sePOSIXLY_CORRECT
estiver no ambiente. Geralmente, as opções devem ir antes de outros argumentos."${f}"
.Uma linha obrigatória do zsh (sem contar o carregamento único de componentes opcionais):
Usamos o
stat
built-in dozsh/stat
módulo e azmv
função para renomear arquivos. E aqui está um extra que coloca a data antes da extensão, se houver.fonte
Pelo que entendi, não sabemos de antemão qual é a data da modificação. Portanto, precisamos obtê-lo de cada arquivo, formatar a saída e renomear cada arquivo de forma que inclua a data da modificação nos nomes dos arquivos.
Você pode salvar esse script como algo como "modif_date.sh" e torná-lo executável. Nós o chamamos com o diretório de destino como argumento:
modif_date.sh txt_collection
Onde "txt_collection" é o nome do diretório em que temos todos os arquivos que queremos renomear.
fonte
stat
utilitário diferente ou nenhum.ls
não é confiável . Em algumas variantes do unix, os nomes de usuários e grupos podem conter espaços, o que prejudicará o alinhamento das colunas da data.ls
como data e hora (em vez de data e ano) deve estar no ano atual. Isso não é verdade. É nos últimos seis meses; isso pode ocorrer no ano anterior (por exemplo, 27 de setembro de 2016 a 31 de dezembro de 2016 estão nos últimos seis meses). (6) Com o risco de imitar o Wiki de Greg (que o @Gilles já citou), os nomes de arquivos que contêm nova linha (s) e espaços podem causar falhas. ... (continua)Aqui está a versão do one-liner do cas, (baseado no oneliner da goldschrafe) estendida com idempotência ,
ou seja, estendido para arquivos de prefixo com data e hora e para fazer isso apenas para aqueles que ainda não possuem prefixo de data e hora .
Caso de uso: útil se você incluir novos arquivos no diretório e desejar adicionar o prefixo de data e hora para aqueles que ainda não possuem um.
fonte
for f in *.jpg ; do jhead -ft "$f" ; done
fonte: unix.stackexchange.com/a/290755/9689