Como mover subdiretórios para outro subdiretório dentro do mesmo diretório?

5

Existe um diretório dir/ . Contém subdiretórios a - z . Eu preciso mover subdiretórios a - y no subdiretório z . Se isso for difícil, então não a - z , mas fornecendo uma lista de diretórios que precisam ser movidos.

Como posso fazer isso no bash?

    
por alxprogger 18.05.2015 / 14:28

3 respostas

1

Quanto a mim, uma maneira mais segura de usar find

find dir/* -prune -type d -name "[a-y]" ! -name "z" -exec mv -t dir/z {} +
    
por 18.05.2015 / 15:04
7

Use a expansão de chaves: link

Para o seu caso, faça:

mv {a..y} z/

Se você tiver uma lista de diretórios, digamos dir1 , dir2 e dir3 , faça algo como:

mv -t z/ dir1 dir2 dir3

Ou talvez:

mv -t z/ dir{1..3}

Breves explicações:

  • -t option significa "alvo". Geralmente é usado para evitar confusão em casos que envolvam o movimento de vários arquivos / diretórios.
  • A expansão de
  • funciona de maneira que {1..15} imprime todos os números de 1 a 15 e {a..f} imprimirá todos os alfabetos de a até f .
por 18.05.2015 / 14:36
1

Nota: essa não é a maneira mais limpa de fazer isso (veja a resposta dos shivams para isso), e apenas funciona se você tiver os diretórios a-z dentro de dir .

Eu sempre usei o mais fácil de lembrar

mv * z

que, claro, reclama que

mv: cannot move ‘z’ to a subdirectory of itself, ‘z/z’

mas faz o que você quer.

Isso se aplica (pelo menos) a GNU coreutils

    
por 18.05.2015 / 17:26

Tags