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 

  • Разве «сломан» заменить существующий файл без fsync ()?
  • Не удается удалить <файл>: нет такого файла или каталога
  • Файлы с именем «core»
  • Переместить каждый файл, который не является каталогом
  • Как отменить и вернуть случайный `7z e`
  • Как использовать awk для чтения данных между всеми частыми временными интервалами
  • Сортировка файлов с определенным расширением с измененным временем и сохранение их в массив
  • Триггерное действие при каждом изменении файла
  • 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 - лучшая ОС в мире.