linux + найти команду с rm -rf

почему следующая команда удалила каталог tmp в / var и как этого избежать?

find /var/tmp -type d -ctime -1 -exec rm -rf {} \; pwd /var/tmp [root@linux /var/tmp]# find /var/tmp -type d -ctime -1 -exec rm -rf {} \; find: /var/tmp: No such file or directory 

  • Загрузка файлов по ssh на основе списка имен файлов
  • Переименовать файл (префикс) с полным путем?
  • Помощь с предоставлением групповых разрешений другим файлам пользователя
  • Извлечь дату создания и время изменения файла в Sunos
  • Максимальное количество открытых файлов в Linux
  • Как проверить, принадлежат ли две директории или файлы одной и той же файловой системе
  • Почему перенаправление выходного цикла зависит от имени файла?
  • /proc/config.gz имеет 0 байт
  • 2 Solutions collect form web for “linux + найти команду с rm -rf”

    Первый find /var/tmp находит /var/tmp . Если вы хотите пропустить этот (и использовать Gnu find ), вы можете изменить команду:

     find /var/tmp -depth -mindepth 1 -type d -ctime -1 -exec rm -rf {} \; 

    или

     find /var/tmp -mindepth 1 -type d -ctime -1 -exec rm -rf {} \; -prune 

    Без -depth и -prune сообщения об ошибках могут возникать, потому что rm -rf удаляет подкаталоги, которые, возможно, уже были обнаружены с помощью find . -depth вызывает -depth rm -r для подкаталогов. Но, как и должно быть достаточно для запуска rm -rf один раз для каждого поддерева, вы можете альтернативно прекратить обработку содержимого каталога с помощью -prune .

    Используйте логический оператор не ! или -not исключить путь / var / tmp из результатов. Примечание: – не совместим с POSIX.

     find /var/tmp -type d -ctime -1 ! -path /var/tmp -exec rm -rf {} \; 

    Или

     find /var/tmp -type d -ctime -1 -not -path /var/tmp -exec rm -rf {} \; 
    Linux и Unix - лучшая ОС в мире.