10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 7 — xargs

В седьмой части статьи «Learn 10 good UNIX usage habits» от IBM мы рассмотрим некоторые возможности xargs.

ПрограммыКодLinuxMacOSFreeBSDterminalТрюки Bash

В седьмой части статьи «Learn 10 good UNIX usage habits» от IBM мы рассмотрим некоторые возможности xargs.

7. Используйте xargs без find.

Можно использовать xargs как преобразователь для вывода команды find. Основная задумка в получении файлов через find, соответствующих критерию поиска. Список найденных файлов передаётся в xargs, который потом запустит какую-нибудь полезную команду со списком файлов в виде аргументов. Самый простой пример:

~ $ find | \
 > xargs

Однако, не думайте что xargs полезен только с утилитой find. xargs — один из самых недооценённых инструментов.

Передача списка, разделённого пробелами

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

$ echo "a
> b
> c" | xargs
a b c

Вы можете использовать любую команду, выводящую имена файлов и передать их с помощью xargs программе, принимающей файлы в качестве аргументов:

$ ls -1 | xargs
database rsa test-weight.html
$ ls -1 | xargs file
database: directory
rsa: PEM RSA private key
test-weight.html: HTML document, ASCII text

Также xargs полезен, когда надо преобразовать вывод команды в одну строку:

$ ls -l | xargs
итого 12 drwxrwxr-x 8 b b 4096 дек 22 2016 database -r-------- 1 b b 3243 июл 28 17:53 rsa -rw-rw-r-- 1 b b 192 мар 17 16:40 test-weight.html
Фото git push в non-bare репозиторий
git push в non-bare репозиторий

Возможно, для вас подобная проблема не так важна, но от того и сложнее вспомнить, как она решается.

Фото 10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 8 — подсчёт с grep
10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 8 — подсчёт с grep

Восьмая часть перевода статьи «Learn 10 good UNIX usage habits» от IBM. В этой части рассмотрим возможности утилиты grep.