Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

Как удалить всё содержимое в папке, но саму папку оставить?

#linux #консоль #archlinux #zsh


Как удалить всё файлы, папки, ссылки в папке, но саму папку оставить?
У меня есть временная папка temp и в неё я кладу файлы, а после работы с ними я хотел
бы удалить всё содержимое. У меня есть файлы типо .zshrc temp.txt и так же папки с
дочерними подпапками и скрытыми каталогами типо .config и так же есть обычные файлы
типо info.txt temp.php и т.п. А также есть файл в имене которых есть две точки типо ..12

Как очистить всё это из папки temp ??

Я уже пробовал команду sudo rm -rf /home/temp/.* /home/temp/* /home/temp/*.*

Но она не всегда срабатывает. Eсли в папке temp будет находится все типы перечисленных
файлов тогда да, она сработает, но если же например только папка и всё, а остальных
типов файлов не будет, то выдает это

no matches found: /home/temp/*.*


Хотя папка с подпапками существует даже после выполнения команды. 
Если же отдельно вручную удалять по каждой папке и по каждому файлу, тогда всё нормально
удаляется. Что я делаю не так? 
    


Ответы

Ответ 1



например, можно дать указание оболочке (приведены примеры для двух наиболее распространённых программ, выполняющих роль оболочки — bash и zsh) включать в список подпадающих под шаблон * файлов/каталогов и те, чьи имена начинаются с точки. bash: $ (shopt -s dotglob; ls -d /путь/*) $ (GLOBIGNORE=.; ls -d /путь/*) zsh: $ (setopt globdots; ls -d /путь/*) $ (setopt dotglob; ls -d /путь/*) $ (set -o globdots; ls -d /путь/*) $ (set -o dotglob; ls -d /путь/*) скобки в примерах используются для того, чтобы переопределение не влияло на текущий процесс оболочки (то, что в скобках, будет выполняться дочерним процессом).

Ответ 2



А по простому: rm -rf ~/tmp mkdir ~/tmp можно ? :-) Если "папка не простая, а смонтированная" то будут проблемы. Тогда, что бы избежать фатального действия ощибки no matches found: рекомендую разбить Вашу длинную команду sudo rm -rf /home/temp/.* /home/temp/* /home/temp/*.* на последовательност элементарных действий: sudo rm -rf /home/temp/.* sudo rm -rf /home/temp/* sudo rm -rf /home/temp/*.* Тогда отсутствие подходящих файлов в одной команде удаления никак не повлияет на работу остальных команд удаления.

Комментариев нет:

Отправить комментарий