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