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 

  • текстовый файл с удаленным запросом, связанный с экземпляром vi
  • Как найти удаляемые файлы, которые были удалены?
  • Сценарий оболочки для объединения файлов с одинаковыми именами
  • Найти новый файл. Несколько ограничений типа файлов
  • Заменить имя файла с именем папки (csh)
  • Искать каталоги для многострочной строки
  • удаление попарно дубликатов файлов
  • Понимание grep и труб в linux
  • 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 - лучшая ОС в мире.