xargs examples

Example 1: xargs examples

# https://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/
# https://shapeshed.com/unix-xargs/

# generate env variables and pass through to the `docker stack deploy` command
$ env $(cat .env | grep ^\[A-Z\] | xargs) docker stack deploy -c swarmprom.yml swarmprom

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

$ find . -name "*.bak" -type f -print | xargs /bin/rm -f

$ find . -name "*.bak" -print0 | xargs -0 -I {} mv {} ~/old.files

$ find . -iname "*.mp3" -print0 | xargs -0 -I mp3file mplayer mp3file

$ echo 'one two three' | xargs mkdir
$ ls
one two three

#  files older than two weeks in the temp folder are found and then piped to the xargs command which runs the rm command on each file and removes them
$ find /tmp -mtime +14 | xargs rm

# The find command supports the -exec option that allows arbitrary commands to be performed on found files. The following are equivalent.
$ find ./foo -type f -name "*.txt" -exec rm {} \; 
$ find ./foo -type f -name "*.txt" | xargs rm

# The -t option prints each command that will be executed to the terminal. This can be helpful when debugging scripts.
$ echo 'one two three' | xargs -t rm
rm one two three

#  to run multiple commands with xargs by using the -I flag. This replaces occurrences of the argument with the argument passed to xargs. The following echos a string and creates a folder.
$ cat foo.txt
one
two
three

$ cat foo.txt | xargs -I % sh -c 'echo %; mkdir %'
one 
two
three

$ ls 
one two three

Example 2: xargs example

echo 'one two three' | xargs mkdir
ls
one two three

Tags:

Misc Example