Script de Linux para mover archivos desde múltiples directorios

Script de Linux para mover archivos desde múltiples directorios

Estoy intentando crear una secuencia de comandos para mover archivos una vez que se colocan en un directorio al subdirectorio. Los archivos
de ejemplo
colocados en /home/userA/directory1se mueven a/home/userA/directory1/directory2

Tengo que repetir esto para todos los userssiguientes /homey tengo que omitir al usuario si directory2no existe.

Mi guión hasta ahora

#!/bin/bash

directory="/home/*/directory1"
directory2="/home/*/directory1/directory2/."

if [ $(ls -1A $directory | wc -l) -gt 0 ] ;
then
find $directory -type f -exec rsync --remove-source-files {} $directory2  \; &>/dev/null ;
fi

El problema que tengo con el script anterior es que mueve todos los archivos a uno de los archivos directory2.

Respuesta1

Supongo que en el home de algunos de tus usuarios existe un directorio llamado d1y dentro de este un subdirectorio llamado d2.

Supongo que quieres hacer algo similar a

#!/bin/bash
for i in /home/*/d1 ; do
    if [ -d "$i/d2" ]; then
     # echo  "$i/d2"
     find  "$i" -maxdepth 1 -type f -exec mv {} "$i/d2" \;
    fi
done

Nota:

  • Si en el nombre real de d1hay algunos espacios necesitas hacer algo más de gimnasio y protegerlos con un \(para que puedas escribir for i in /home/*/directory\ with\ spaces; do).
  • Intente escribir echo $directory2 ; exiten su guión anterior y comprenderá por qué se comporta de manera diferente a lo que esperaba. Más información sobreExpansión del nombre del archivo.

información relacionada