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!