Uma abordagem poderia ser usar grep em combinação com xargs:
ls -A | egrep -v sonDir | xargs -i mv {} sonDir
- primeiro liste todos os arquivos e pastas no diretório atual (ou seja, fatherDir) com
ls
- lembre-se de ler também arquivos ocultos com o
-A flag
-
egrep -v permite que você exclua sonDir da saída impressa
- crie a linha de comando a partir da entrada padrão com
xargs e substitua {} pelo nome do arquivo. A opção -i é necessária aqui!
É isso! Eu uso essa abordagem com bastante frequência, pois permite que você exclua não apenas uma pasta, mas pastas e arquivos diferentes ao mesmo tempo. Caso você queira excluir, por exemplo sonDir daughterDir e nephew.file você pode fazer isso simplesmente especificando egrep -v '(sonDir|daughterDir|nephew.file)' , o resto do comando mostrado acima permanece o mesmo ... e há muitas variações!