21 de septiembre de 2018, 03:32:27 am

Autor Tema: Alguien la gasta usando xargs, pipes y demás?  (Leído 455 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado lufertec

  • Usuario Jr
  • **
  • Mensajes: 90
  • Karma: +2/-0
Alguien la gasta usando xargs, pipes y demás?
« : 28 de enero de 2018, 11:25:57 pm »
Buenas!

Verán, tengo una serie de archivos pdf... que fueron sincronizados entre varias compus usando synchting, el problema es que esto les ha cambiado la fecha de modificación y le pone la fecha de cuando se crearon los "clones"... entonces a la hora de buscar ordenarlos por fecha, pues quedan todos iguales!

Estaba viendo que podría usar pdfinfo... que entre varias cosas suelta una línea con:
CreationDate:   Thu Dec 19 18:58:21 2013

Luego a eso se le puede hacer un
date -d "Thu Dec 19 18:58:21 2013" +%Y%m%d%H%M

y suelta:
201312191858

Y entonces eso hacer un:
touch -t 201312191858 archivo.pdf

Y listo... le queda como fecha de modificación la fecha de cuando se creó el pdf, y entonces luego se podrían ordenar por fechas de verdad....

¿Pero cómo se podría unir todo eso de forma tal que lo haga "automáticamente" a todos los .pdf de un directorio?

O quizá la cosa sea mejor con algún script en algo...

No sé si me pude explicar bien...
« Última Modificación: 28 de enero de 2018, 11:42:13 pm por lufertec »

Desconectado spiridon

  • Novato
  • *
  • Mensajes: 10
  • Karma: +0/-0
Re:Alguien la gasta usando xargs, pipes y demás?
« Respuesta #1 : 29 de enero de 2018, 11:05:50 pm »
Hola @lufertec
a ver qué te parece esto:
Código: [Seleccionar]
#!/bin/bash

directorio=${1:-.}      # El primer argumento es el directorio, por defecto
                        # es . (el directorio actual)
dir_vacio=              # Para registrar si encontramos o no archivos pdf

cd $directorio || exit 1

# La salida de ls la leemos linea por linea y la escribimos en la
# variable 'archivo'
ls *.pdf *.PDF 2>/dev/null | while read archivo; do
# Extraemos y parseamos la fecha de la salida de pdfinfo
fecha_creacion="$(pdfinfo "$archivo" 2>/dev/null \
| grep -- "CreationDate" \
| cut -d':' -f2-)"
# Aplicamos date
fecha=$(date -d "$fecha_creacion" +%Y%m%d%H%M)
echo "=> Corrigiendo fecha de creación en $archivo ($fecha)"
# Tal como esta, no hace nada, solo imprime el comando. Para
# ejecutarlo, borrar 'echo' de la siguiente linea:
echo touch -t $fecha "$archivo"
# Si llegamos aca, es que hay archivos pdf en el directorio
dir_vacio=1
done

# Si $dir_vacio sigue sin estar definida, no encontramos nada
[ $dir_vacio ] || echo "$directorio: no se encontraron archivos pdf"
Esto no es gastarla igual, es apenas rascar la superficie :-P

EDITO: como siempre que creamos un script, hacemos: chmod a+x <script> para poder ejecutarlo luego.
« Última Modificación: 29 de enero de 2018, 11:09:31 pm por spiridon »

Desconectado lufertec

  • Usuario Jr
  • **
  • Mensajes: 90
  • Karma: +2/-0
Re:Alguien la gasta usando xargs, pipes y demás?
« Respuesta #2 : 30 de enero de 2018, 02:50:17 pm »
Esto no es gastarla igual, es apenas rascar la superficie :-P

Me imagino, pero para mí es como magia pura! jajaja
Muchas gracias che, funcionó genial