перемещение подкаталогов с помощью команды mv

При удалении каталога необходимо рекурсивно удалить его содержимое. Почему это так?

Упрощая, можно сказать, что «каталог» - это файл, содержащий список пар.Что произойдет, если вы просто «освободите блоки каталога на диске»?

Рассмотрим удаление обычных файлов. Программа (например, rm ) вызывает системный вызов unlink () . Операционная система (а точнее, драйвер файловой системы) проверяет количество жестких ссылок ( имя_файла в каталоге в предыдущем абзаце). Если он равен нулю и файл не открывается, его можно удалить физически. Таким образом, мы знаем, как удалить файл.

Теперь давайте снова вернемся к удалению каталога. Когда вы просто освобождаете блоки, вы не разъединяете в нем файлы, вы не уменьшаете счетчик жестких ссылок для любого файла в каталоге. И для любого файла в подкаталогах, подкаталогах и т. Д. Какой вывод? Точно, нам нужно выполнить unlink для всех файлов в каталоге, который мы удаляем, потому что мы не хотим получать неизвлекаемый мусор в файловой системе.

Таким образом, вы можете использовать решение @ SYN (запускающее rm в фоновом режиме), но нет способа удалить каталог за постоянное время.

1
03.04.2017, 11:54
1 ответ

Если путь начинается с / , он начинается с корня (т. Е. Каталога, у которого нет родителя¹). Если путь не начинается с / , он начинается с текущего каталога.

Есть два специальных имени каталога: . всегда относится к текущему каталогу, а .. всегда относится к родительскому элементу текущего каталога. Итак, если вы находитесь в D , который является подкаталогом K , тогда вы можете ссылаться на K как .. . Если вы находитесь в D , то простой K означает подкаталог D под названием K , что вам не нужно.

Таким образом, вы ищете команду

mv ../K/H ../K/B/

Вы также можете использовать абсолютные пути, но вам нужно будет указать весь путь от корня. Например. если K на самом деле является / home / henri / plays / 1 / K , тогда вы можете написать

mv /home/henri/exercises/1/K/H /home/henri/exercises/1/K/B/

¹ Технически корневой каталог на самом деле является собственным родительским каталогом.

2
27.01.2020, 23:34

Теги

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