insertando la fecha de modificación en el nombre del archivo - 2 casos

insertando la fecha de modificación en el nombre del archivo - 2 casos

Creo que haré dos preguntas distintas, pero el contexto es el mismo, así que espero que esté bien.

Tengo un resultado de algunos procesos como se presenta a continuación (que no puedo modificar).

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

Lo que intento lograr con esta entrada es la "operación simple" de insertar la fecha en el nombre del archivo o sustituir ese nombre de archivo. La fecha deseada generalmente corresponde a la fecha de la última modificación, por lo que es factible for f in *.csv; do mv -- "$f" "$f-$(date +%Y%m%d -r "${f}")"; donecambiar el nombre de una línea. A veces, la fecha de la última modificación está a un día de lo que busco, por lo que me pregunto si hay una manera fácil (¿una sola línea?) de disminuir ese valor numérico (por ejemplo, transformar 20160506 en 20160505).

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

El segundo caso. La fecha de la última modificación no es útil porque es completamente incorrecta. Pero el número en el nombre del archivo aumenta junto con la fecha esperada. ¿Puedo insertar algún valor numérico en el nombre del archivo y hacer que el mismo valor aumente en uno para cada archivo posterior? ¿Ves lo que estoy tratando de lograr? Simplemente no sé cómo ;)...

EDITAR He encontrado una respuesta para mi pregunta.aquí- algo así... ¿Tal vez simplemente no puedo usarlo?

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

Sé cómo modificarlo según mis necesidades, pero al final el resultado es el mismo para todos los archivos, como si "el incremento no funciona". Guardé el código de arriba rename.shy recordé que debía permitir su ejecución chmod 755 rename.sh, pero aún así no se me ocurrió nada...

Respuesta1

Espero que no sea un crimen, para responder a mi propia pregunta. He encontrado una solución parcial enPreguntar a Ubuntu- funciona para mí, al menos en el primer caso.

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

Y para modificar todos los archivos en la subcarpeta, escriba:

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

información relacionada