Автор Тема: Find удалить не пустую папку[Решено]  (Прочитано 7127 раз)

Оффлайн romario

  • Участник
  • *
  • Сообщений: 621
    • ЮНИКС
есть такой скрипт

#!/bin/sh
echo `date "+%Y"`

find /var/spool/asterisk/monitor/`date "+%Y"`/ -ctime +5 -delete

поидее он должен искать все папки и файлы в директории /var/spool/asterisk/monitor/2013/ и утирать их, но во первых он говорит что не может стереть не пустые директории, а когда я их очищаю руками то от стариает и ту папку в которой ищет. Полная лажа, подскажите что не так делаю
« Последнее редактирование: 25.09.2013 09:27:31 от romario »

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Re: Find удалить не пустую папку
« Ответ #1 : 24.09.2013 12:22:42 »
Удалять рекурсивно не пробовали (не знаю, можно ли это посредством find сделать, но с rm никаких проблем) ?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Find удалить не пустую папку
« Ответ #2 : 24.09.2013 12:26:32 »
А что по этому поводу в мане?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Find удалить не пустую папку
« Ответ #3 : 24.09.2013 12:36:33 »
Цитировать
...
      -depth Process each directory's contents before the  directory  itself.
              The -delete action also implies -depth
......
       -delete
              Delete files; true if removal succeeded.  If the removal failed,
              an  error message is issued.  If -delete fails, find's exit sta‐
              tus will be nonzero (when it eventually exits).  Use of  -delete
              automatically turns on the `-depth' option.

              Warnings:  Don't  forget that the find command line is evaluated
              as an expression, so putting -delete first will make find try to
              delete everything below the starting points you specified.  When
              testing a find command line that you later intend  to  use  with
              -delete,  you should explicitly specify -depth in order to avoid
              later surprises.  Because -delete  implies  -depth,  you  cannot
              usefully use -prune and -delete together.
......
       -prune True; if the file is a directory, do not  descend  into  it.  If
              -depth  is  given,  false;  no  effect.  Because -delete implies
              -depth, you cannot usefully use -prune and -delete together.

......
EXAMPLES
       find /tmp -name core -type f -print | xargs /bin/rm -f

       Find files named core in or below the directory /tmp and  delete  them.
       Note  that  this  will work incorrectly if there are any filenames con‐
       taining newlines, single or double quotes, or spaces.


Посмотрите ещё здесь и здесь:
http://citforum.ru/operating_systems/manpages/FIND.1.shtml
http://ru.wikipedia.org/wiki/Find

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 162
    • Домашняя страница
Re: Find удалить не пустую папку
« Ответ #4 : 24.09.2013 13:08:42 »
есть такой скрипт

#!/bin/sh
echo `date "+%Y"`

find /var/spool/asterisk/monitor/`date "+%Y"`/ -ctime +5 -delete

поидее он должен искать все папки и файлы в директории /var/spool/asterisk/monitor/2013/ и утирать их, но во первых он говорит что не может стереть не пустые директории, а когда я их очищаю руками то от стариает и ту папку в которой ищет. Полная лажа, подскажите что не так делаю
-delete для одиночных файлов используется. Используйте -exec:
find /var/spool/asterisk/monitor/`date "+%Y"`/ -ctime +5 -exec rm -rf '{}' ';'
Если не хотите видеть предупреждения, то добавьте 2>/dev/null
« Последнее редактирование: 24.09.2013 13:10:46 от Skull »
Андрей Черепанов (cas@)

Оффлайн romario

  • Участник
  • *
  • Сообщений: 621
    • ЮНИКС
Re: Find удалить не пустую папку
« Ответ #5 : 24.09.2013 15:02:30 »

find /var/spool/asterisk/monitor/`date "+%Y"`/ -ctime +5 -exec rm -rf '{}' ';'
Если не хотите видеть предупреждения, то добавьте 2>/dev/null

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

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 162
    • Домашняя страница
Re: Find удалить не пустую папку
« Ответ #6 : 24.09.2013 16:45:29 »

find /var/spool/asterisk/monitor/`date "+%Y"`/ -ctime +5 -exec rm -rf '{}' ';'
Если не хотите видеть предупреждения, то добавьте 2>/dev/null

Такто вроде удаляет, но вместе с папкой где я произвожу поиск, а мне ее надо оставлять.
Зачем тогда так сложно? Проще было
rm -rf /var/spool/asterisk/monitor/`date "+%Y"`/*
Андрей Черепанов (cas@)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Find удалить не пустую папку
« Ответ #7 : 24.09.2013 18:57:59 »
Может вам вот это надо?
http://forum.oszone.net/thread-256858.html

Оффлайн romario

  • Участник
  • *
  • Сообщений: 621
    • ЮНИКС
Re: Find удалить не пустую папку
« Ответ #8 : 25.09.2013 09:27:07 »

find /var/spool/asterisk/monitor/`date "+%Y"`/ -ctime +5 -exec rm -rf '{}' ';'
Если не хотите видеть предупреждения, то добавьте 2>/dev/null

Такто вроде удаляет, но вместе с папкой где я произвожу поиск, а мне ее надо оставлять.
Зачем тогда так сложно? Проще было
rm -rf /var/spool/asterisk/monitor/`date "+%Y"`/*

Спасибо сработало