miércoles, 4 de diciembre de 2013

Organizar archivos en carpetas según su fecha (consola Linux)








En una entrada anterior vimos cómo Organizar / mover archivos a distintas carpetas según su extensión (Bash Script). Hoy veremos un caso parecido, pero esta vez nos fijaremos en la fecha del archivo. Por ejemplo, queremos ordenar nuestro directorio de fotos por meses. Pues ésto lo podemos hacer de forma sencilla desde la consola de linux.

Lo primero es abrir el terminal y situarnos en el directorio que queremos ordenar y crear los directorios. Para simplificar el ejemplo crearemos solo dos:
mkdir noviembre

mkdir diciembre


A continuación crearemos un archivo auxiliar que nos servirá de margen inferior para mover las fotos. Es decir, moveremos a una carpeta todos los archivos cuya fecha de modificación sea más reciente que la fecha del archivo auxiliar. Por tanto, deberemos empezar por los archivos más recientes (en este caso por el més más reciente: Diciembre, después Noviembre, ...).

Empezaremos por el mes de diciembre, fijando la fecha del archivo auxiliar al 1 de diciembre:
touch -t 201312010000 auxiliar

Y moveremos todos los archivos más recientes que el archivo auxiliar a la carpeta diciembre:
find -maxdepth 1 -type f -newer auxiliar -exec mv {} diciembre \;

Procederemos de forma similar con el mes de noviembre
touch -t 201311010000 auxiliar

find -maxdepth 1 -type f -newer auxiliar -exec mv {} noviembre \;

Y haremos lo mismo con el resto de meses.

Explicación detallada de los comandos:

touch -t 201312010000 auxiliar

Crea un archivo con la fecha y hora de modificación 01/12/2013 00:00

find -maxdepth 1 -type f -newer auxiliar -exec mv {} diciembre \;

Ésta instrucción se puede dividir en dos*
  • “find -maxdepth 1 -type f -newer auxiliar” lo que hace es listar los archivos del directorio actual (pero no los de los subdirectorios) que sean más recientes que la fecha de modificación que el archivo auxiliar.
  • “-exec mv {} diciembre \;” mueve los archivos listados por find a la carpeta diciembre.

Acabamos de ver una forma de organizar nuestros archivos utilizando solamente la consola. Aunque en principio parezca engorroso, resulta mucho más sencillo y cómodo que hacerlo de forma gráfica (utilizando Nemo o Nautilus), si tenemos un gran número de archivos que ordenar. Espero que os sirva.




Fuentes:







4 Comentarios:

Unknown dijo...

Los organiza por fecha de modificación... ¿sería posible por fecha de creación?

Felipe Martínez D. dijo...

Hola Patricia.

He estado buscando una respuesta a lo que preguntas y hasta el momento no la he encontrado. En cuanto sepa como hacerlo, lo comentaré.

Saludos cordiales.

Unknown dijo...

He modificado un código muy parecido al tuyo para la misma función solo que organiza archivos por su extensión (mkv), mi intención es meter las mismas líneas en un script para organizar avi, rar, etc
En consola una línea por separado (esta por ejemplo) funciona muy bien, sabes cómo puedo hacer para añadir las demás líneas a un script y ejecutarlas sin crear conflicto entre ellas? Ahora mismo me da error en el "-exec"

find /home/origen -type f -name "*.mkv" -exec mv {} /media/destino \;

Felipe Martínez D. dijo...

Hola. Qué error te da?

Publicar un comentario

Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO