xargs與find經常結合來進行文件操作,平時刪日志的時候只是習慣的去刪除,比如 # find . -type f -name "*.log" | xargs rm -rf * 就將以log結尾的文件刪除了,如果我想去移動或者復制就需要使用參數來代替了。
xargs -i 參數或者-I參數配合{}即可進行文件的操作。 -I replace-str Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1. --replace[=replace-str], -i[replace-str] This option is a synonym for -Ireplace-str if replace-str is specified, and for -I{} otherwise. This option is deprecated; use -I instead. man了一下看的還是不太懂,通過例子,做作實驗將我的理解寫一下。
[root@jstuz6zw4s2vwp tmp]#ls

[root@jstuz6zw4s2vwp tmp]# find . -type f -name "*.log" | xargs -i cp {} /tmp/k/

[root@jstuz6zw4s2vwp tmp]# find . -type f -name "*.log" | xargs -I {} cp {} /tmp/n/

結果出來了, 加-i 參數直接用 {}就能代替管道之前的標准輸出的內容; 加 -I 參數 需要事先指定替換字符。