-
O caminho conciso:
mv -vi {$dir1,$dir2,$dir3,$dir4}/* $CYCL
Não sei por que você está usando a opção
-i
para os arquivos que deseja excluir de qualquer maneira. Você não se importa se algo for sobregravado, apenas adicionando mais etapas manuais. -
Usando seu loop:
for dir in $dir1 $dir2 $dir3 $dir4; do mv -vi $dir/* $CYCL done
A sintaxe for var in list; do ; done
atribuirá sequencialmente o valor de cada elemento na lista à variável X
e, em seguida, executará o que estiver no bloco do
. Se você não mencionar a variável que você usou, nada será feito. Por exemplo, isso simplesmente imprimirá "olá" três vezes:
for i in Tom Dick Harry; do echo hello; done
hello
hello
hello
Se você quiser realmente fazer algo aos elementos da sua lista, precisará se referir à variável que você atribuiu a eles:
$ for i in Tom Dick Harry; do echo hello $i; done
hello Tom
hello Dick
hello Harry
Assim, o seu loop estava executando mv ./* $CYCL
, o que teria movido o conteúdo do seu diretório atual para qualquer valor de $CYCL
. Ele não teria tocado o conteúdo de dirs 1-4 de nenhuma maneira.