Two of the most important command line utilities used with pipelines to build command lines are:

  • xargs – reads streams of data from standard input, then generates and executes command lines.
  • tee – reads from standard input and writes simultaneously to standard output and one or many files. It’s more of a redirection command.

Syntax for using a pipe:

$ command1 args | command2 args 
$ command1 args | command2 args | command3 args ...

How to Use xargs to Run Commands

In this example, the second command converts multi-line output into a single line using xargs.

$ ls -1 *.sh
$ ls -1 *.sh | xargs


To count the number of lines/words/characters in each file in a list, use the commands below.

$ ls *.sh | xargs wc -l	    #count number of lines in each file
$ ls *.sh | xargs wc -w	    #count number of words in each file
$ ls *.sh | xargs wc -c	    #count number of characters in each file
$ ls *.sh | xargs wc	    #count lines, words and characters in each file


The command below finds and recursively deletes the directory named All in the current directory.

$ find . -name "All" -type d -print0 | xargs  -0 /bin/rm -rf "{}"


-print0 action enables printing of the full directory path on the standard output, followed by a null character

-0 xargs flag deals with space in filenames.

How to Use Tee with Commands in Linux

Allows you to view top running processes by highest memory and CPU usage in Linux.

$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt
$ cat  topprocs.txt

To append data in an existing file(s), pass the -a flag.

$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt 

That's it !!

Was this answer helpful? 0 Users Found This Useful (1 Votes)