Xargs is a great command that reads streams of data from standard input, then generates and executes command lines; meaning it can take output of a command and passes it as argument of another command. If no command is specified, xargs executes echo by default. You many also instruct it to read data from a file instead of stdin.


There are several ways in which xargs is useful in daily usage of the command line. In this article, we will explain 12 practical Linux xargs command examples for beginners.


1. The first example shows how to find out all the .png images and archive them using the tar utility as follows.


Here, the action command -print0 enables printing of the full file path on the standard output, followed by a null character and -0 xargs flag effectively deals with space in filenames.

$ find Pictures/rootadminz/ -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz


2. You can also convert muti-line output from ls command into single line using xargs as follows.

$ ls -1 Pictures/rootadminz/
$ ls -1 Pictures/rootadminz/ | xargs


3. To generate a compact list of all Linux user accounts on the system, use the following command.

$ cut -d: -f1 < /etc/passwd | sort | xargs


4. Assuming you have a list of files, and you wish to know the number of lines/words/characters in each file in the list, you can use ls command and xargs for this purpose as follows.

$ ls *upload* | xargs wc


5. Xarags also allows you to find and recursively remove a directory, for example the following command will recursively remove DomTerm in the directory Downloads.

$ find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"


6. Similarly to the previous command, you can also finds all files named net_stats in the current directory and delete them.

$ find . -name "net_stats" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"


7. Next, use xargs to copy a file to multiple directories at once; in this example we are trying to copy the file.

$ echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx 


8. You can also use the find command, xargs and rename commands together to to rename all files or subdirectories in a particular directory to lowercase as follows.

$ find Documnets -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;


9. Here is another useful usage example for xargs, it shows how to delete all files within a directory except one or few files with a given extension.

$ find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}


10. As mentioned earlier, you can instruct xargs to read items from a file instead of standard input using the -a flag as shown.

$ xargs -a rss_links.txt


11. You can enable verbosity using the -t flag, which tells xargs to print the command line on the standard error output before executing it.

$ find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"


12. By default, xargs terminates/delimits items using blank spaces, you can use the -d flag to set the delimiter which may be a single character, a C-style character escape such as \n, or an octal or hexadecimal escape code.


In addition, you can also prompt the user about whether to run each command line and read a line from the terminal, using the -p flag as shown (simply type y for yes or n for no).

$ echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx 


For more information, read the xargs man page.

$ man xargs 


Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)