Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/05/2011, 09:20
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Bash Scripting : mover archivos de un directorio a otro

$dir_ini -d *

expande a

/home/test/dir1/ -d *

dir1 no es un comando, por lo que eso da error de sintaxis. -d es un parámetro para ls, que no estás usando. En tu caso no necesitás el for. Supongo que este ls se hace para recorrer los subdirectorios, pero no sirve: no toma archivos del directorio padre ni funciona para más de 1 nivel de subdirectorios.

find .
¿Por qué buscas los archivos en la carpeta actual? supongo que lo que querés hacer es find $dir_ini

-name *.*
No es error de sintaxis pero no es lo que querés. Al hacer *.* sin comillas, bash expande a los nombres de archivo actuales y rompe el comando. Si en la carpeta actual existen los archivos a.txt y b.txt el comando queda

-name a.txt b.txt

lo cual sí es un error de sintaxis. Además, como agregaste el punto, no se considerarán archivos (o directorios) sin extensión. Mejor dejalo como * en vez de *.*, funciona como se espera. *.* es algo de DOS, no de UNIX.

exec cp $"file" $dir_fin {}
$"file" es otro error de sintaxis.

Tu segundo ejemplo es mejor, pero yo lo haría así:

Código BASH:
Ver original
  1. cd $DIR_INI
  2. find . -mtime -8 -exec mkdir -p $DIR_FIN/`dirname {}` \; -exec cp {} $DIR_FIN/`dirname {}` \;

Para cada archivo en el directorio actual, modificado hace menos de 8 días (es decir, en la última semana), crear su ruta en $DIR_FIN (ruta relativa a $DIR_INI) y copiarlo, conservando la estructura.
No está probado pero debería funcionar. MKDIR puede dar errores al intentar crear un directorio que ya existe, eso se puede arreglar


Saludos.