Somente mover pastas que não existem no diretório de destino

1

Eu estou procurando uma maneira de mover pastas que ainda não estão presentes no diretório de destino no meu servidor linux.

Exemplo:

Diretório de destino

folder1
folder2
folder3
folder4

Diretório de origem

folder1
folder2
folder5
folder6
folder7

Eu não quero que folder1 e folder2 do diretório de origem sobrescrevam as pastas no diretório de destino. O conteúdo em folder1 e folder2 no diretório de origem pode ser diferente do diretório de destino, mas não quero que essas alterações sejam copiadas.

Isso está em um servidor do CentOS 7 e qualquer ferramenta necessária para o trabalho é aceita.

A lista de pastas para não mover é dinâmica, por isso não quero configurá-la estaticamente.

    
por Frederik Nielsen 19.08.2015 / 20:23

1 resposta

1

Você pode fazer isso configurando um loop em cada diretório na origem e, se não houver um diretório no destino com esse nome, ele será movido: bourne snippit:

for dir in 'cd "$sourcedir" ; ls -1F | grep '/''
do
  if [ ! -d "${targetdir}/${dir}" ]
  then
    mv "$dir" "${targetdir}/"
  fi
done

Observe que isso quebrará ou substituirá um arquivo se você tiver um arquivo no destino com o mesmo nome de um diretório na origem. Se você quiser robusto, você deve adicionar algumas verificações adicionais.

    
por 20.08.2015 / 00:28