Xargs
From FreeBSDwiki
(Difference between revisions)
Line 13: | Line 13: | ||
dard input is exhausted. | dard input is exhausted. | ||
− | When you need a more complex usage, the -J | + | When you need a more complex usage, the -J argument specifies a "replacement string" to allow you to insert the output of the last command into the new one in an arbitary location. For example, say you wanted to move all files that contained a certain string into a different folder: |
server# '''grep -rv "I should be in newfolder!" oldfolder | xargs -J% mv oldfolder/% newfolder/''' | server# '''grep -rv "I should be in newfolder!" oldfolder | xargs -J% mv oldfolder/% newfolder/''' | ||
[[Category:System Commands]] | [[Category:System Commands]] |
Revision as of 21:48, 14 June 2008
xargs is a command useful for acting upon the output of an earlier command; for instance, you could pipe the output of the find command to xargs rm to recursively delete all .tmp files below the current directory:
server# find . -name "*.tmp" | xargs rm
from the manpage:
The xargs utility reads space, tab, newline and end-of-file delimited strings from the standard input and executes utility with the strings as arguments.
Any arguments specified on the command line are given to utility upon each invocation, followed by some number of the arguments read from the standard input of xargs. The utility is repeatedly executed until stan- dard input is exhausted.
When you need a more complex usage, the -J argument specifies a "replacement string" to allow you to insert the output of the last command into the new one in an arbitary location. For example, say you wanted to move all files that contained a certain string into a different folder:
server# grep -rv "I should be in newfolder!" oldfolder | xargs -J% mv oldfolder/% newfolder/