Mover o conteúdo do diretório um nível acima sem usar mv / cp / find /

1

Muitas vezes, depois de baixar e descompactar uma pasta compactada, a pessoa acaba com uma estrutura de pastas como esta:

.
└── downloaded
    └── downloaded
        ├── a
        ├── b
        ├── c
        └── d

Eu sei que posso fazer algo semelhante a mv downloaded/downloaded/* downloaded && rmdir downloaded/downloaded . No entanto, lembro-me de uma vez após um tutorial, onde o autor usou um comando, vamos chamá-lo de xyz , para mover o conteúdo de downloaded/downloaded para downloaded e depois excluir downloaded/downloaded automaticamente assim: xyz downloaded/downloaded . / p>

Esqueci o nome do comando, bem como o tutorial em que o encontrei. É muito útil na minha opinião.

Minha pergunta é: você sabe o nome do comando?

Eu me deparei com algumas perguntas em que as pessoas perguntavam como mover o conteúdo da pasta para um nível acima, mas nenhuma das perguntas tinha uma resposta que continha o comando específico que eu estava procurando.

    
por Benni 27.06.2017 / 15:59

1 resposta

2

tar --remove-files -cC downloaded{,} | tar -x

(Isso não é tão simples quanto o seu exemplar xyz downloaded/downloaded , mas observe que downloaded é digitado apenas uma vez.)

Explicação:

No início, downloaded{,} é expandido por bash a downloaded downloaded , portanto, o comando é equivalente a:

tar -c --remove-files -C downloaded downloaded | tar -x

Significado em sequência:

  • tar -c - crie um arquivo…
  • --remove-files -… (mas remova arquivos e diretórios após adicionar)…
  • -C downloaded -… com o diretório de trabalho alterado para (o exterior) downloaded ;
  • downloaded - adicione (o interior) downloaded ao arquivo;
  • | - depois canalize o arquivo para…
  • tar -x -… outro tar pediu para extraí-lo.
por 11.10.2017 / 23:46