Exclua a pasta pai mantendo todo o conteúdo [duplicado]

3

Eu quero excluir meu diretório pai, mas manter todo o seu conteúdo. Atualmente minha estrutura de diretórios

$ /usermanagement/usermanagement/file1

Após excluir meu diretório pai, quero ver como a estrutura abaixo

$ /usermanagement/file1
    
por Rakib 29.09.2017 / 18:28

4 respostas

1

Pode ser que eu não entendi sua pergunta corretamente. Mas a resposta do que eu juntei da sua pergunta é,

Assuming you are in current directory, which name is nested and parent directory name is test.

$ cp -Rp . ../;cd ../;rm -rf nested

Explicação

  1. cp -Rp . ../ - Isso copiará todos os arquivos, incluindo o diretório, o diretório aninhado e os arquivos ocultos. Onde,

    • -R flag é usado para "copiar diretórios recursivamente"

    • -p é "preservar os atributos especificados (padrão: mode, ownership, timestamps), se possível atributos adicionais: context, links, xattr, all",

    • . é para indicar o diretório atual como fonte

    • .. indicando como diretório pai como destino.

  2. cd ../ - Isso moverá você do diretório atual para o diretório pai

  3. rm -rf nested - Isso removerá todos os arquivos, incluindo diretórios, diretórios aninhados e arquivos ocultos.

Fontes: página do manual

    
por 29.09.2017 / 19:41
6

(assumindo que o diretório que você deseja remover é o diretório de trabalho atual)

com zsh :

cd -P . &&
  mv -- *(D) .. &&
  cd -P .. &&
  rmdir ~-

com bash :

cd -P . &&
  (shopt -s dotglob && mv -- * ..) &&
  cd -P .. &&
  rmdir "$OLDPWD"

cd -P . garante que o diretório de trabalho atual armazenado em $PWD seja livre de links simbólicos. Queremos mover todos os arquivos e diretórios para o pai, incluindo os ocultos (daí o (D) globbing flag e dotglob options).

Se isso funcionou, mudamos o diretório atual um nível acima e removemos nosso diretório anterior.

(você pode querer adicionar uma opção -i a mv para ter a chance de cancelar movimentos que sobrescrevem arquivos)

    
por 29.09.2017 / 18:32
0

Uma solução mais simples do que as acima é:

mv /usermanagement/usermanagement /usermanagement.tmp
rmdir /usermanagement
mv /usermanagement.tmp /usermanagement

Ou seja. mova o diretório usermanagement inferior para o diretório raiz com um nome temporário, remova o diretório usermanagement superior (agora vazio) e, finalmente, renomeie o diretório /usermanagement.tmp para /usermanagement .

    
por 29.09.2017 / 19:57
0

Provavelmente a solução mais simples:

$ mv /usermanagement/usermanagement/* /usermanagement/ && rmdir /usermanagement/usermanagement
    
por 29.09.2017 / 21:07