xargs command in Linux with examples

xargs is a Unix command which can be used to build and execute commands from standard input.

Importance :
Some commands like grep can accept input as parameters, but some commands accepts arguments, this is place where xargs came into picture.

Syntax :

xargs [options] [command]

xargs options :
-0 : input items are terminated by null character instead of white spaces
-a file : read items from file instead of standard input
–delimiter = delim : input items are terminated by a special character
-E eof-str : set the end of file string to eof-str
-I replace-str : replace occurrences of replace-str in the initial arguments with names read from standard input
-L max-lines : use at-most max-lines non-blank input lines per command line.
-p : prompt the user about whether to run each command line and read a line from terminal.
-r : If the standard input does not contain any nonblanks, do not run the command
-x : exit if the size is exceeded.
–help : print the summary of options to xargs and exit
–version : print the version no. of xargs and exit

Example :

xargs example

Example :
Below is the C program, which reads a text file “test.txt” and then use output of this program as input to touch command.

contents of text file “test.txt”

file1
file2
file3
file4
filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to read contents of file
#include <stdio.h>
  
// Driver Code
int main(){
    int c;
    FILE *file;
  
    // open file test.txt
    file = fopen("test.txt", "r");
    if (file) {
  
        // read file line-by-line until
        // end of file
        while ((c = getc(file)) != EOF)
            putchar(c);
  
        fclose(file);
    }
    return 0;
}

chevron_right


Output :

file1
file2
file3
file4

Now, use output of ./a.out as input to touch command

xargs example with touch

Command usage with options :

xargs --version

Prints the version number of xargs command and then exit.

Output :

xargs (GNU findutils) 4.7.0-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
xargs -a test.txt

It will show contents of file

file1
file2
file3
file4
xargs -p  -a test.txt

-p option prompts for confirmation before running each command line. It only runs the command line if the response starts with ‘y’ or ‘Y’

Output :

# xargs -p  -a test.txt
echo file1 file2 file3 file4 ?...y
file1 file2 file3 file4

# xargs -p  -a test.txt                                                                                                                 
echo file1 file2 file3 file4 ?...n
 xargs -r -a test.txt

Now, let’s suppose the file “test.txt” is empty, and above command is executed, -r option ensures if standard input is empty, then command is not executed, so above command will not produce any output,
But, if above command is executed without -r option, it will produce a blank line as output.
See below image as instance :

xargs with -r option

Mandeep Singh

References :
1) xargs wikipedia
2) need of xargs
3) xargs man page



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.