
Estoy escribiendo un script para crear un directorio con el nombre de la fecha de hoy (aaaa_mm_dd) y luego mover todos los archivos que terminan en la fecha de hoy a ese directorio. ¿Existe una mejor manera de mover los archivos al directorio, ya que lo que hice también selecciona el directorio?
now=$(date '+%Y_%m_%d')
mkdir $now
mv *$now $now/
Respuesta1
mv *?"$now" "$now/."
se asegurará de que el directorio que acaba de crear no esté seleccionado para su traslado, al requerir que haya al menos un carácter ( ?
) delante de la marca de tiempo.
Respuesta2
El find
comando puede filtrar por tipos de archivos y por nombres de archivos.
Entonces creo que esto hará lo que quieras:
now=$(date '+%Y_%m_%d')
find . -name "*$now" -type f -print0 | xargs -0 mv -t $now/
aunque es posible que deba pensar si hay alguna rareza en los nombres de sus archivos (como otros directorios que contengan la cadena de fecha) antes de ejecutar esto en un lote grande.