Arquivos numéricos baseados no tempo de modificação

1

Eu tenho um conjunto de arquivos que preciso renomear com base no tempo de criação, acrescentando dois dígitos ao início, indicando a sequência.

Digamos que eu tenha os seguintes arquivos:

Filename         Creation time
api.c            00:15
helloworld.h     00:05
ubuntu.iso       00:10

Após renomear, os nomes dos arquivos devem estar no formato:

01_helloworld.h
02_ubuntu.iso
03_api.c

Como devo fazer isso?

    
por user2064000 06.03.2017 / 18:25

2 respostas

3

Isso canaliza em menos também bash assumido.

ls -tr imprime arquivos mais antigos modificados primeiro, outros comentaram sobre a hora da criação.

a=0, ls -tr | while read line; do printf "%s \'%s\' \'%03d_%s\'\n" mv "$line" $((a=a + 1)) "$line"; done|less
    
por 06.03.2017 / 19:14
0

com zsh :

( autoload zmv
set -- *(.Om)
pad=${#${#}}
zmv -n -Q '*(.Om)' '${(l:${pad}::0:)$((++i))}_$f' )

Isso obtém o número de arquivos primeiro (para poder calcular o comprimento do preenchimento zero via l flag) e renomeia-os usando zmv com -Q para aproveitar os qualificadores de glob .Om , que selecione apenas arquivos regulares e ordene-os por mtime .
Remova o -n (o comutador dry-run ) se estiver satisfeito com o resultado.

    
por 23.03.2017 / 18:50