mova todos os arquivos do diretório atual para o diretório superior, incluindo dotfiles, arquivos começando com .. e traço

Existem muitas maneiras de derrubar uma árvore, como todos nós sabemos.

  • Aqui estão algumas maneiras de fazer isso.
  1. Com mv
$ mv * .[^.]* ..

Observação importante: isso não corresponderá a arquivos que começam com ..

  • Se você deseja combinar arquivos começando com .. e, em vez disso, --use o mvcomando abaixo .
$ mv -- * .[^.] .??* .. 
  • que corresponderá a tudo, exceto .e ... . *corresponderá a tudo que não comece com a .e .[^.]corresponderá a todos os nomes de arquivo de 2 caracteres começando com um ponto exceto .. , e .??*corresponderá a todos os nomes de arquivo que começam com um ponto com pelo menos 3 caracteres. Bem como --para combinar arquivos começando com um travessão.
  1. Com shopt
$ (shopt -s dotglob; mv -- * ..)

isso ajuda você a arquivos começando com ..

  • O texto acima é colocado entre parênteses para que seja executado em um subshell e, portanto, os arquivos que começam com --não são interpretados como argumentos para mv.
  1. Outra alternativa com find
$ find . -mindepth 1 -maxdepth 1 -exec mv -t.. -- {} +
  1. Se você tiver rsyncem sua máquina, você pode usar isso. (Pelo rsyncque eu conheço, o Windows não tem uma boa porta . Se alguém souber de uma para Git Bash, eu adoraria saber).
$ rsync -a --remove-source-files . ..
  • Com o comando acima, estamos dizendo ao rsync para copiar o conteúdo de .em..

  • A opção -apermite a recursão em .subdiretórios e permite algumas outras opções comuns.

  • A opção --remove-source-filesdiz rsyncpara remover os arquivos de origem após uma cópia bem-sucedida, ou seja, faz com que rsyncse comportem de forma semelhante ao mvcomando.

  • Aproveitar.