como apagar um diretório de um caminho?

3

Suponha que eu tenha um caminho

Leonardo/data/approach/tennis/video

e eu quero excluir o diretório approach , o que significa que o caminho deve ficar assim:

Leonardo/data/tennis/video

Posso fazer isso do terminal com algum comando?

Sem copiar tennis para data e depois excluir approach manualmente?

    
por Leonardo 20.12.2015 / 17:06

2 respostas

1

Com um simples:

mv Leonardo/data/approach/tennis Leonardo/data && rmdir Leonardo/data/approach

Por que rmdir ? Para não excluir o diretório quando os subdiretórios ainda existirem.

Exemplo

$ mkdir -p Leonardo/data/approach/tennis/video

$ tree                                                                                                                 
.
'-- Leonardo
    '-- data
        '-- approach
            '-- tennis
                '-- video


5 directories, 0 files

$ mv Leonardo/data/approach/tennis Leonardo/data && rmdir Leonardo/data/approach                                    

$  tree                                                                                                                 
.
'-- Leonardo
    '-- data
        '-- tennis
            '-- video

4 directories, 0 files
    
por A.B. 20.12.2015 / 17:27
2

Você pode usar esta função; Ele irá mover tudo dentro do diretório passado como um argumento um nível acima, portanto, cuidando de vários arquivos / pastas no diretório de destino:

function delete_dir() {
    [ -d "" ] || return;
    for x in ""/*; do
        mv -i "$x" ""/..
    done
    rmdir ""
}

Adicione-o no final de ~/.bashrc e execute . ~/.bashrc nas instâncias de Bash em execução (se houver) para aplicar as alterações imediatamente.

$ tree
.
└── foo
    └── bar
        ├── 1
        ├── 2
        └── 3

2 directories, 3 files
$ delete_dir foo/bar
$ tree
.
└── foo
    ├── 1
    ├── 2
    └── 3

1 directory, 3 files
    
por kos 20.12.2015 / 17:27