Script do Linux para mover arquivos de diretórios muilple

0

Estou tentando criar um script para mover arquivos depois que eles são colocados em um diretório no subdiretório
Exemplo
Os arquivos colocados em /home/userA/directory1 são movidos para /home/userA/directory1/directory2

Eu tenho que repetir isso para todo o users sob /home e eu tenho que pular o usuário se o directory2 não existir.

Meu script até agora

#!/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

O problema que tenho com o script acima é que ele move todos os arquivos para um dos directory2 .

    
por howareyou 12.10.2015 / 16:58

1 resposta

0

Eu suponho que na casa de alguns de seus usuários existe um diretório chamado d1 e dentro deste um subdiretório chamado d2 .

Suponho que você queira fazer algo semelhante 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:

  • Se no nome real de d1 houver alguns espaços, você precisará fazer mais alguns exercícios e protegê-los com um \ (para poder escrever for i in /home/*/directory\ with\ spaces; do ).
  • Tente escrever echo $directory2 ; exit no seu script anterior e você entenderá por que ele se comporta de maneira diferente do que você espera. Mais informações sobre Expansão do nome do arquivo .
por 12.10.2015 / 18:09