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?
С простым:
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
Можно использовать эту функцию; это переместится, все в каталоге передало как аргумент один уровень выше, следовательно заботящийся о нескольких файлах / папки в целевом каталоге:
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