Home » Tecnología » Script bash para mover ficheros entre directorios

Script bash para mover ficheros entre directorios

Publicado en: Tecnología 4

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

4 Comentarios

  1. Luis
    | Responder

    Very good

  2. Droide
    | Responder

    Thanks

  3. Ruben
    | Responder

    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
      | Responder

      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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *