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

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

 sudo rm directory/* 

дает ответ

  • LD_LIBRARY_PATH всегда пустой после sudo
  • Создание группы и пользователя для Tomcat RHEL / CentOS
  • сделать постоянный виртуальный интерфейс?
  • Почему я не могу делать визуальный режим при использовании visudo?
  • Когда sh является символической ссылкой на bash или тире, bash ограничивает себя соблюдением POSIX, поэтому он должен быть на 100% совместим с sh?
  • Как настроить KDE / Gnome-Remote-Server с CentOS 6
  •  cannot remove `directory/*': no such file or directory 

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

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

     sudo ls directory/ 

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

  • Добавление файлов в Linux readonly-root
  • Можно ли использовать chcon для сужения selinux, чтобы быть менее безопасным, чем установка selinux в разрешающую?
  • переименовывать файлы с помощью команды rename
  • Почему мой файл sudoers неожиданно сбросил настройки?
  • Только цифры sh и grep
  • Понимание следующей команды find
  • 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 если вы абсолютно не уверены в том, что делаете).

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