inserindo a data modificada no nome do arquivo - 2 casos

0

Acredito que farei duas perguntas separadas, mas o contexto é o mesmo, então espero que esteja tudo bem.

Eu tenho uma saída de alguns processos, conforme apresentado abaixo (que não posso modificar).

25978.csv
26044.csv
26865.csv
26914.csv
27013.csv

O que estou tentando alcançar com essa entrada é a "operação simples" de inserir a data no nome do arquivo ou substituir esse nome de arquivo. A data desejada geralmente corresponde à data da última modificação, portanto, é possível com for f in *.csv; do mv -- "$f" "$f-$(date +%Y%m%d -r "${f}")"; done e renomear oneliner. Às vezes, a data da última modificação é um dia longe do que eu procuro, então estou imaginando se há uma maneira fácil (oneliner?) De diminuir esse valor numérico (por exemplo, transformar 20160506 em 20160505)?

20150506.csv
20150507.csv
20150508.csv
20150509.csv
20150510.csv

O segundo caso. A data da última modificação não é útil, pois está completamente incorreta. Mas o número no nome do arquivo aumenta junto com a data esperada. Posso inserir algum valor numérico no nome do arquivo e aumentar o mesmo valor em um para cada arquivo subseqüente? Você vê o que estou tentando realizar? Eu só não sei como;) ...

EDITAR Eu encontrei uma resposta para a minha pergunta aqui - tipo de ... Talvez eu simplesmente não possa usá-lo?

cnt=0
for i in *; do
  let cnt=cnt+1
  mv "$i" "$(echo "${i}_${cnt}" | awk -F_ '{print $1"_"$3}')"
done

Eu sei como modificá-lo para as minhas necessidades, mas no final a saída é a mesma para todos os arquivos, como o 'incremento não está funcionando'. Eu salvei código de cima como rename.sh e lembrei de permitir sua execução por chmod 755 rename.sh , mas ainda assim não consegui nada ...

    
por Je.dno 18.05.2016 / 19:19

1 resposta

0

Espero que não seja um crime responder à minha própria pergunta. Eu encontrei uma solução parcial em AskUbuntu - funciona para mim, pelo menos no primeiro caso.

touch -d "$(date -R -r filename) - 2 hours" filename

E para modificação de todos os arquivos na subpasta, digite:

find DIRECTORY -print | while read filename; do
    # do whatever you want with the file
    touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
    
por 20.05.2016 / 12:39