1.find默認查找當前目錄和子目錄,通過maxdepth限制只查當前目錄:
find . -maxdepth 1 -type f -name "*.php"
2.
find . -name "*.txt" -exec rm {} \;
find . -name "*.txt" | xargs rm {}
-exec
1.參數是一個一個傳遞的,傳遞一個參數執行一次rm
2.文件名有空格等特殊字符也能處理
-xargs
1.一次將參數傳給命令,可以使用-n控制參數個數
2.處理特殊文件名需要采用如下方式: find . -name "*.txt" print0 |xargs -0 rm {}
實驗結果如下,可以清楚看到參數傳遞過程
[root@andes.com ~/tmp/dir]#find . -type f |xargs -t -n 2 echo echo ./data.txt ./env2.txt ./data.txt ./env2.txt echo ./env.txt ./export2.txt ./env.txt ./export2.txt echo ./s.txt ./d.txt ./s.txt ./d.txt echo ./export.txt ./set.txt ./export.txt ./set.txt echo ./fuck.txt ./fuck.txt [root@andes.com ~/tmp/dir]#find . -type f -exec echo begin {} \; begin ./data.txt begin ./env2.txt begin ./env.txt begin ./export2.txt begin ./s.txt begin ./d.txt begin ./export.txt begin ./set.txt begin ./fuck.txt [root@andes.com ~/tmp/dir]#
find -print0 與 xargs -0 的結合避免文件名有特殊字符如空格,引號等無法處理:
find . -name "*.txt" print0 |xargs -0 rm {}
find
-print True; print the full file name on the standard output, followed by a newline. If you are piping the
output of find into another program and there is the faintest possibility that the files which you
are searching for might contain a newline, then you should seriously consider using the -print0
option instead of -print. See the UNUSUAL FILENAMES section for information about how unusual char-
acters in filenames are handled.
-print0
True; print the full file name on the standard output, followed by a null character (instead of the
newline character that -print uses). This allows file names that contain newlines or other types of
white space to be correctly interpreted by programs that process the find output. This option corre-
sponds to the -0 option of xargs.
xargs
-0 Input items are terminated by a null character insteadof by
whitespace, and the quotes and backslash are not special (every
character is taken literally). Disables the end of file string,
which istreated like any other argument. Useful when input
items might contain white space, quote marks, or backslashes.
The GNU find -print0 option produces input suitable for this
mode.