Новичку в Unix может пригодиться ваша помощь.
Я использую Solaris 10, и мне нужно найти все файлы, за исключением всех скрытых файлов и каталогов. Конечная цель - поместить это в скрипт, который будет удалять на сервере файлы старше 60 дней.
Я попытался:
найти . ! (-name '. *' -prune)
но он вообще не находит файлов.
Любые предложения приветствуются.
Я считаю, что проблема в том, что вы исключаете все, что называется ". *", И начинаете поиск с "." (что соответствует вашему исключению), поэтому вы исключаете все. Кроме того, я считаю, что вы неправильно используете -prune
флаг (это действие, например -print
, и поэтому не обязательно полезен как часть отрицательного выражения). Попробуй это:
find . \( -name '.*' \! -name '.' -prune \) -o -print
Это явно включает "." в поиске, а затем исключает все остальное, что соответствует .*
. Если вы знаете, что ваша отправная точка не включает файлы точек, вы можете немного упростить это:
find * \( -name '.*' -prune \) -o -print
нужно найти все файлы, исключая все скрытые (файлы и каталоги).
найти . -name '[^.] *'
исключая все (скрытые файлы) и каталоги.
найти . -type f -name '[^.] *'
Конечная цель - поместить это в скрипт, который будет удалять файлы на сервере старше 60 дней.
найти . -name '[^.] *' -mtime +59 | xargs rm -f
Это должно работать:
find * | grep -v /\\.