Cree un directorio con la fecha de hoy y mueva archivos a él.

Cree un directorio con la fecha de hoy y mueva archivos a él.

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 findcomando 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.

información relacionada