Intereting Posts
sed и строка данных Может ли процесс, запущенный в контейнере linux, взаимодействовать с другим процессом, запущенным на ОС хоста через IPC? Измените размер определенного окна на определенный размер и местоположение экрана из сценария Помощь с помощью команды find Невозможно использовать D-link (DWA-131) беспроводного адаптера USB для работы Backtrack5 R1 VMware SSH через штопор и прокси получают ошибку «ssh_exchange_identification» Почему меню или элемент по правому клику не могут быть настроены с помощью menu.xml? Начало в нормальном режиме на bash Выполнение скрипта в разрешениях zsh-файла Зачем использовать rpm, если есть yum? Является ли PTTY внутри ядра или пользовательского пространства? Найти правильные драйверы ACPI без проб и ошибок cron и отправлять почту неверному пользователю Возможно ли, что APT обрабатывает зашифрованные пакеты GPG? Как убить команду, выполненную из скрипта?

Найти файлы, grep для шаблона, возглавить первые 10, затем tar

Я ищу шаблон в файлах с помощью find, тогда я хочу только первую десятку, которую я нахожу, и tar.

find /var/log/file | xargs grep "pattern" | head -n10​ | tar -czvf tarfile.tgz 

Я также попытался использовать xargs tar . Это также приводит к ошибкам. Что я делаю не так?

Вот что я вижу из первой команды:

 tar: Cowardly refusing to create an empty archive Try `tar --help' or `tar --usage' for more information. 

Вы можете использовать

 tar cvzf files.tar.gz $(find /var/log/file -type f -exec grep -l "pattern" {} + | \ head -n10) 

здесь grep -l будет печатать только файлы, соответствующие шаблону.


Вам придется использовать параметр -P для tar если вы получаете ошибку, например

error tar: Удаление имени `/ 'из имен участников

см. man tar

 -P, --absolute-names don't strip leading '/'s from file names 

Или вы можете указать -C изменить каталог, а не указывать полный путь к файлу архива.

пытаться

 tar cvzf tarfile.tgz $(find /var/log/file | grep "pattern" | head -n10 ) 

где

  • код внутри $( ) создать список из 10 файлов.

в отличие от cpio, tar не будет принимать список файлов в stdin.