find只查当前目录 和 -exec和xargs区别

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.

原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值