how to delete one directory of в path?

Suppose I have в path

Leonardo/data/approach/tennis/video

and I want to delete approach directory, which means that path should look like this:

Leonardo/data/tennis/video

Хан I do it from the терминал with some command?

Without copying tennis to data and then delete approach manually?

3
задан 20 December 2015 в 19:10

2 ответа

С простым:

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

, Почему rmdir? Для не удаления каталога, когда подкаталоги все еще существуют.

<час>

Пример

$ 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
1
ответ дан 1 December 2019 в 16:26

Можно использовать эту функцию; это переместится, все в каталоге передало как аргумент один уровень выше, следовательно заботящийся о нескольких файлах / папки в целевом каталоге:

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

Добавляют его в конце ~/.bashrc и работают . ~/.bashrc в рабочих экземплярах Bash (если таковые имеются) для применения изменений сразу.

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

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

1 directory, 3 files
2
ответ дан 1 December 2019 в 16:26

Другие вопросы по тегам:

Похожие вопросы: