inserindo data modificada no nome do arquivo - 2 casos

inserindo data modificada no nome do arquivo - 2 casos

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

Tenho uma saída de alguns processos apresentados abaixo (que não posso modificar).

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

O que estou tentando alcançar com esta 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 for f in *.csv; do mv -- "$f" "$f-$(date +%Y%m%d -r "${f}")"; donerenomear o oneliner. Às vezes, a data da última modificação está a um dia do que procuro, então estou me perguntando se existe 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 subsequente? Você vê o que estou tentando realizar? Só não sei como ;)...

EDITAR Encontrei uma resposta para minha perguntaaqui- mais ou menos... Talvez eu simplesmente não consiga usar?

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 de acordo com minhas necessidades, mas no final a saída é a mesma para todos os arquivos, como 'o incremento não está funcionando'. Salvei o código acima como rename.she lembrei de permitir sua execução por chmod 755 rename.sh, mas ainda assim não consegui nada ...

Responder1

Espero que não seja um crime, para responder à minha própria pergunta. Encontrei uma solução parcial emPergunte ao Ubuntu- 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 da 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

informação relacionada