Как использовать sudo для удаления содержимого каталога

У меня есть законная потребность в очистке каталога, к которому у моей учетной записи нет доступа (это каталог кеша, используемый приложением, и принадлежит учетной записи, которая запускает приложение.) У моей учетной записи есть полные права sudo (я думаю) , но я не могу понять, как удалить содержимое данного каталога. Моя учетная запись не может cd в каталог, только в родительский каталог.

 sudo rm directory/* 

дает ответ

 cannot remove `directory/*': no such file or directory 

Это похоже на проблему, которая должна иметь простой ответ, но я не могу ее найти.

Изменить: этот каталог определенно не пуст:

 sudo ls directory/ 

возвращает более 1000 имен файлов.

  • ssh с sudo не запускает службы
  • Как сделать редактирование sudo в MC?
  • debian 8.2 больше не может su root
  • Выполнять команды как другого пользователя без пароля - sudo не удается?
  • Получить команды, которые пользователь может запустить из / etc / sudoers?
  • rsync: Как я могу вытащить файл -exclude-from из удаленного хоста?
  • Псевдоним, выполняющий команду с использованием sudo
  • Копирование защищенных файлов между серверами в одной строке?
  • 2 Solutions collect form web for “Как использовать sudo для удаления содержимого каталога”

    У вас проблемы, потому что ваша оболочка пытается расширить * в список файлов, но это невозможно, поскольку у вас нет прав на чтение каталога.

    Я могу думать о двух вещах, которые будут работать

     sudo bash -c "rm directory/*" 

    В этом случае * не расшифровывается вами, а root, который может читать каталог

    ИЛИ

     sudo find directory -type f -exec rm {} \; 

    Вышеизложенное будет удалять только файлы, а не каталоги (в противном случае это приведет к удалению directory вместе с его содержимым), но я чувствую, что меньше подвержено ошибкам.

    Изменить: в первом варианте я случайно записал каталог. * Вместо каталога / *

    Каждый раз, когда вы собираетесь делать вещи, вы должны серьезно подумать о том, что делаете, если не используете явные пути.

    sudo rm /explicit/path/to/directory/* должен работать. Вы все равно получите эту ошибку, если в directory нет файлов; вы можете подавить это с помощью rm -f ( не rm -fr если вы абсолютно не уверены в том, что делаете).

    Interesting Posts

    Gnome3 – добавление клавиатуры «Пользовательские ярлыки» с использованием dconf без необходимости выхода из системы

    Использование rsync для перемещения (не копирования) файлов между каталогами?

    Первое письмо отскакивает; вторая и последующие электронные письма проходят через

    Как обеспечить интерфейс GUI для всех пользователей Ubuntu?

    Настройка сшивания OCSP – проверьте сертификаты CA

    Статический IP-адрес без шлюза

    Как развернуть раздел LVM2 в Fedora Linux

    Почему бы не установить MaxSessions OpenSSH на 1000000?

    Установите Git на CentOS 5.5

    Помогает ли родительский скрипт bash запомнить историю cd из сценария child bash?

    Почему мой ключевой файл в / etc / crypttab не распознается?

    Каковы преимущества использования OmniOS, чем SmartOS или OpenIndiana?

    Как я могу определить, какая программа или пользователь подключен к определенному порту после факта?

    Как я могу установить псевдоним bash, который оценивает $ () при запуске?

    «найти» по каталогам с именем … / dirnameXX / … с переменной XX

    Linux и Unix - лучшая ОС в мире.