Исключить из поиска find внутренний каталог

virtualbrest

Полезный
Регистрация
6 Май 2007
Сообщения
210
Реакции
18
Архивирую файлы сайта такой командой для сервера:

find . -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
gzip $archive.tar

Как правильно исключить их этого поиска некий каталог и все его содержимое внутри папки. К примеру, надо исключить этот каталог:

userfiles/image/_photo/2010/

Что бы он не архивировался, там старые фото, и архив получается большим.
 
Нужно использовать опцию -prune
Код:
find . -path ./2010 -prune -or -type f -print0
Пропускаем папку 2010, находящийся в текущей папке.
 
Что то я пробовал, не получается, вот так?

Код:
find . -path ./userfiles/image/_photo/2010 -prume -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null

может не туда просто вставляю...
 
забыл -or. Это логический или.
Как только путь в процессе поиска становится равным ./userfiles/image/_photo/2010 он пропускается или выполняется действия с правой стороны от -or
Вот так должно быть
Код:
find . -path ./userfiles/image/_photo/2010 -prune -or -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
 
Не катит, отвечает

find: invalid predicate `-prume'

и вот ни в какую...
 
Блин,я ошибся. Правильный параметр -prune. Буква n!
Скопировал с консоли. В последнем find исключается папка ./userfiles/image/2010
Код:
$ mkdir -p ./{trololo,userfiles}/{image,image2}/{2010,2011}/
$ touch ./{trololo,userfiles}/{image,image2}/{2010,2011}/01.jpg
$ find . -type f
./trololo/image/2010/01.jpg
./trololo/image/2011/01.jpg
./trololo/image2/2010/01.jpg
./trololo/image2/2011/01.jpg
./userfiles/image/2010/01.jpg
./userfiles/image/2011/01.jpg
./userfiles/image2/2010/01.jpg
./userfiles/image2/2011/01.jpg
$ find . -path ./userfiles/image/2010 -prune -or -type f -print
./trololo/image/2010/01.jpg
./trololo/image/2011/01.jpg
./trololo/image2/2010/01.jpg
./trololo/image2/2011/01.jpg
./userfiles/image/2011/01.jpg
./userfiles/image2/2010/01.jpg
./userfiles/image2/2011/01.jpg
 
Ага.. точно. Ну, судя по всему заработало, упаковало все как надо, спасибо!
 
Назад
Сверху