Hoy me ha surgido tener que hacer un sencillo shell script de bash para que los ficheros de una carpeta, les cambie permisos y los mueva a otra carpeta.
Y si bien se puede hacer por todos los ficheros del directorio y se mueven, pero esto podría darme un error.
Necesitaba hacerlo fichero a fichero, dentro del directorio. Pensé en meter un ‘ls‘ en un array, pero no es necesario, es mucho más sencillo.
Con un ‘for‘ recorres el contenido, por cada fichero que encuentra le aplicas lo que necesitas y listo. Funciona como un reloj.
Aquí os dejo el script básico:
#! /bin/bash for fichero in "/path/directorio/*" do # acciones... done
Y un caso práctico, donde declaramos como variables las rutas de los directorios, aplicamos permisos y movemos los ficheros de un origen a otro directorio sería:
#! /bin/bash # Variables rutaOrigen=/home/entrada/* rutaDestino=/home/nueva_entrada/ # Loop for fichero in "$rutaOrigen" do /bin/chmod 666 $fichero /bin/chown usuario:grupo $fichero /bin/mv $fichero $rutaDestino done
Un saludo
Luis
Very good
Droide
Thanks
Ruben
Hay alguna forma de hacer un script que mueva un archivo pasado como parámetro al escritorio del usuario sin usar el comando mv? Gracias
David Nicolás
Hola Rubén.
No sé bien a que te refieres con mover un archivo sin usar mv.
Dentro del loop, un for en este caso, puedes ejecutar los comandos unix/linux que necesites o mejor se ajusten a tu necesidad.
El caso concreto de ‘mv’ que permite mover un fichero, te permite quitarlo del origen y dejarlo en destino. Y no tienes duplicados en el file system. Con ‘cp’ lo copias, y el fichero seguirá en origen.