PS. Чисто из любви к искусству , "уплотнённый" вариант этого решения:
find /some_dir/ -type f -size -10k -exec tar czvf /tmp/small_files.tgz {}+
Это даже не только из любви к искусству - это более верный способ, т.к. при наличии в именах файлов пробелов и разных спецсимволов, использование find ... | xargs ... приводит к проблемам. Я даже пробовал find /some_dir/ -type f -print0 |xargs -0 tar czvf /tmp/small_files.tgz , но всё равно такой вариант давал сбои (если в папке some_dir очень много файлов, то архивировалась только часть).
Я пробовал на FreeBSD 6.1. В ней обязательно оказалось перед + поставить пробел:
find /some_dir/ -type f -size -10k -exec tar czvf /tmp/small_files.tgz {} +
иначе была ошибка find: -exec: no terminating ";" or "+"
А ещё я столкнулся со следующим ограничением:
при выполнении perl-строчки `tar cfvz $saveto_dir$date\.tgz $file_list `; когда размер переменной $file_list превышает 200-400Кб, то команда не выполняется. Наверно, буфер, в который записывается строчка параметров, ограничен этим значением. И, скорее всего, это ограничение действует при использовании find ... | xargs ...