Estoy intentando escribir un script de "conserje" que se ejecutará como un cron
trabajo en un directorio específico. Se supone que debe crear una carpeta de archivo con la fecha de creación en el nombre y luego buscar y mover todos los archivos de un determinado tipo a esta nueva carpeta.
Aquí está mi código de prueba:
#!/bin/bash
today=$(date +'%m:%d:%Y')
target="Archived-$today"
mkdir -p $target
find . -type f -name "*.zip" -exec mv -i {} /$target \;
Se las arregla para crear la carpeta correctamente, pero no puede mover los archivos que encuentra a la carpeta. Solo he estado haciendo esto como una pequeña prueba, y tanto el script como los archivos han sido creados por el mismo usuario. Si agrego sudo
al principio intenta mover los archivos, pero lo que sucede es que solo elimina los archivos del directorio actual, pero no los coloca en el directorio recién creado.
No estoy intentando mover archivos .zip. Sólo un ejemplo.
Lo he intentado teniendo chmod 777
tanto archivos como carpetas. Sucede lo mismo.
Estoy ejecutando ubuntu 14.04 LTS.
Si hay una manera mucho mejor de hacer esto, dígame.
Cualquier sugerencia en la dirección correcta sería muy apreciada.
Editar
Ahora funciona.
Actualicé la find
declaración a:
find . -maxdepth 1 -type f -name "*.zip" -exec mv -t "$target/" {} \;
Respuesta1
buscar archivos en el directorio actual, no en subdirectorios:
find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \;
excluir método de directorios:
find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \;
Tenga en cuenta que esto excluirá solo el archivo de hoy, mientras que tendrá otro archivo, recomiendo el primer comando o crear directorios de archivo fuera del directorio principal.