Name
xargs — stdin stdout - file -- opt --help --version
Synopsis
xargs [options] [command]
xargs is one of the oddest
yet most powerful commands available to the shell. It reads lines of
text from standard input, turns them into commands, and executes
them. This might not sound exciting, but xargs has some unique uses, particularly
for processing a list of files you’ve located. Suppose you made a
file named important that lists
important files, one per line:
$ cat important /home/jsmith/mail/love-letters /usr/local/lib/critical_stuff /etc/passwd ...
With xargs, you can process
each of these files easily with other Linux commands. For instance,
the following command runs the ls
-l command on all the listed files:
$ cat important | xargs ls -l
Similarly, you can view the files with less:
$ cat important | xargs less
and even delete them with rm:
$ cat important | xargs rm -f
Each of these pipelines reads the list of files from important and produces and runs new Linux
commands based on the list. The power begins when the input list
doesn’t come from a file, but from another command writing to
standard output. In particular, the find command, which prints a list of files
on standard output, makes a great partner for xargs. For example, to search your current
directory hierarchy for files containing the word
“myxomatosis”:
$ find . -print | xargs grep -l myxomatosis
This power comes with one warning: if any of the files located
by find contains whitespace in
its name, this will confuse grep ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access