Рейтинг:0

Заархивируйте все файлы, возвращенные командой "grep-ril"

флаг lc

я использую grep -ril чтобы увидеть все файлы, содержащие определенную строку:

[user@machine]$ grep -ril "тестовая строка"
файл1.log
файл2.log
файл3.log
файл4.log
...

Затем я хотел бы заархивировать все файлы, которые были возвращены этой командой. Это возможно?

Я пробовал такие вещи, как grep -ril мой шаблон | zip-файлы.zip и grep -ril мой шаблон | zip > файлы.zip но пока ничего не получилось.

Есть ли обходной путь для этого?

Спасибо.

Рейтинг:2
флаг cn
Bob

Использовать молния переключатель командной строки -@ иметь молния брать список входных файлов из стандартного ввода, а не из командной строки. Например,

grep -ril "тестовая строка" | zip имя-нового-zip-файла -@ 
Рейтинг:0
флаг in

Вы можете попробовать команду следующим образом:

zip zipfile.zip `grep -ril "тестовая строка"`
Ginnungagap avatar
флаг gu
Это страдает от обычной проблемы «любой файл с пробелом или начинающимся с тире», что делает его неуниверсальным, нестабильным и, как правило, плохой привычкой, поскольку в некоторых случаях это может вызвать проблемы с безопасностью.
Romeo Ninov avatar
флаг in
@Ginnungagap, ИМХО то же самое для ответа Боба
Ginnungagap avatar
флаг gu
Вероятно, он страдает от новой строки в именах файлов, но он не страдает от того, что файл с именем `-o` (например) интерпретируется `zip` как переключатель командной строки, и не страдает от `имя файла с пробелом` (опять же, для пример) интерпретируется как 3 отдельных файла. И, как правило, лучше передавать, чем расширять командную строку, поскольку маловероятно, что это изменит поведение вызываемой программы.
Ginnungagap avatar
флаг gu
На самом деле, ища документ, иллюстрирующий это, я наткнулся на [это] (https://insinuator.net/2014/12/revisiting-an-old-friend-shell-globbing/), который объясняет проблему и фактически перечисляет `zip ` как проблему безопасности с таким вызовом.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.