![]() |
отфильтровать файлы а затем удалить.
Здравствуйте, помогите решить задачу. Есть сервер на дебиане + почта нужно сделать так чтобы письма с конкретной темой самоуничтожались. К примеру:
root@msb:/home/vmail/pl.ua/m-gol/new# cat /home/vmail/pl.ua/m-gol/new/* | grep 'REMOVE' Subject: REMOVE файлы типа -rw------- 1 vmail vmail 699 2013-06-17 10:04 1371452689.P2695Q0M10324.msb.pl.ua -rw------- 1 vmail vmail 702 2013-06-17 10:28 1371454131.P6236Q0M829677.msb.pl.ua Т.е. в директории есть письма с темой удалить. Как выполнять это для всех файлов и подкаталогов в /home/vmail/ , и после обнаружения файлы удалять. ? |
А если так?
Код:
rm `grep -rl 'REMOVE' *` |
очень даже! только чтобы вопросов не задавал rm -f
А как попросить просмотреть все каталоги и файлы в них? |
В смысле? Вообще все в определённой папке? Тогда
Код:
ls -lR путь_к_папке |
нет, ко всему каталогу /home/vmail/ естественно, что в нем много других каталогов и подкаталогов, которые тоже нужно просматривать.
|
Ну для этого параметр -R и стоит.
|
не совсем понимаю вид всей команды.
ls -lR /home/vmail/ | rm `grep -rl 'REMOVE' *` ?? |
Так нужно посмотреть или удалить?
|
удалить во всех каталогах /home/vmail/
я пробовал рекурсивно, -r но оно удаляет вместе с каталогом))) |
Ну а первая команда чем не устраивает? Параметр -r у grep как раз и включает рекурсивный поиск. И rm удаляет все файлы во всех подкаталогах, которые найдёт grep.
|
Ещё вариант:
rm `find . -type f -print | xargs grep -l 'REMOVE'` |
Всё разобрался. спасибо за помощь!
|
И ещё один вариант, имхо самый правильный:
find . -type f -exec grep -q 'REMOVE' '{}' \; -delete |
Время: 09:38. |
Время: 09:38.
© OSzone.net 2001-