zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    Raid磁盘阵列更换磁盘时另一块盘离线恢复案例(v7000存储数据恢复)
    服务器SQL server数据库被加密恢复方案
    Vsan分布式文件系统逻辑架构损坏恢复过程
    Linux服务器数据恢复案例,服务器瘫痪数据恢复成功
    数据库执行truncate table CM_CHECK_ITEM_HIS
    服务器ocfs2文件系统被误格式化的数据恢复过程
    内蒙古某公司XFS文件系统服务器数据恢复报告
    关于vsan分布式服务器数据恢复成功案例分享
    北京某公司存储数据恢复成功案例;存储崩溃数据恢复方法
    IBM X3850服务器数据恢复成功案例
  • 原文地址:https://www.cnblogs.com/leezhxing/p/4092481.html
Copyright © 2011-2022 走看看