来由

经常我们需要找到某类文件, 并对进行处理。 例如找到.svn文件夹, 然后删除掉。 如果不使用shell,你可以选择手动删除, 前提是没有几个此类文件, 但是svn信息文件很多, 不能采用手动删除, 或者逐个命令删除。

由此引入shell来解决此问题。

方法1 find –exec 选项

NAME
       find - search for files in a directory hierarchy

SYNOPSIS
       find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

DESCRIPTION
       This  manual  page  documents  the GNU version of find.  GNU find searches the
       directory tree rooted at each given file name by evaluating the given  expres‐
       sion  from  left  to  right, according to the rules of precedence (see section
       OPERATORS), until the outcome is known (the left hand side is  false  for  and
       operations, true for or), at which point find moves on to the next file name.

If you are using find in an environment where security is important (for exam‐
       ple if you are using it to search  directories  that  are  writable  by  other
       users), you should read the "Security Considerations" chapter of the findutils
       documentation, which is called Finding Files and comes with findutils.    That
       document also includes a lot more detail and discussion than this manual page,
       so you may find it a more useful source of information.

有效命令:

find ./testtime/ -name .svn -exec rm -rf {}\;;

-exec command ;
       Execute command; true if 0 status is returned.  All following arguments
       to find are taken to be arguments to the command until an argument con‐
       sisting of `;' is encountered.  The string `{}' is replaced by the cur‐
       rent file name being processed everywhere it occurs in the arguments to
       the  command,  not just in arguments where it is alone, as in some ver‐
       sions of find.  Both of these constructions might need  to  be  escaped
       (with  a  `\')  or  quoted to protect them from expansion by the shell.
       See the EXAMPLES section for examples of the use of the  -exec  option.
       The  specified  command is run once for each matched file.  The command
       is executed in the starting directory.   There are unavoidable security
       problems  surrounding  use  of  the  -exec  action;  you should use the
       -execdir option instead.

-exec command {} +
       This variant of the -exec action runs  the  specified  command  on  the
       selected  files,  but  the  command  line  is  built  by appending each
       selected file name at the end; the total number of invocations  of  the
       command  will  be much less than the number of matched files.  The com‐
       mand line is built in much the same way that xargs builds  its  command
       lines.   Only  one instance of `{}' is allowed within the command.  The
       command is executed in the starting directory.

方法2 find xargs组合

xargs 含义, 从xargs参数构造命令,并执行, 执行命令的入参为标准输入。

NAME
       xargs - build and execute command lines from standard input

SYNOPSIS
       xargs  [-0prtx]  [-E  eof-str]  [-e[eof-str]]  [--eof[=eof-str]]  [--null] [-d
       delimiter]  [--delimiter   delimiter]   [-I   replace-str]   [-i[replace-str]]
       [--replace[=replace-str]]  [-l[max-lines]]  [-L  max-lines] [--max-lines[=max-
       lines]] [-n max-args] [--max-args=max-args] [-s  max-chars]  [--max-chars=max-
       chars]  [-P  max-procs]  [--max-procs=max-procs]  [--interactive]  [--verbose]
       [--exit]  [--no-run-if-empty]  [--arg-file=file]  [--show-limits]  [--version]
       [--help] [command [initial-arguments]]

DESCRIPTION
       This  manual  page documents the GNU version of xargs.  xargs reads items from
       the standard input, delimited by blanks (which can be protected with double or
       single  quotes  or a backslash) or newlines, and executes the command (default
       is /bin/echo) one or more times with any initial-arguments followed  by  items
       read from standard input.  Blank lines on the standard input are ignored.

Because Unix filenames can contain blanks and newlines, this default behaviour
       is often problematic; filenames containing blanks and/or newlines  are  incor‐
       rectly processed by xargs.  In these situations it is better to use the -0 op‐
       tion, which prevents such problems.   When using this option you will need  to
       ensure  that  the  program which produces the input for xargs also uses a null
       character as a separator.  If that  program  is  GNU  find  for  example,  the
       -print0 option does this for you.

If  any  invocation of the command exits with a status of 255, xargs will stop
       immediately without reading any further input.  An error message is issued  on
       stderr when this happens.

有效命令:

find -name .svn | xargs rm –rf

方法3 find –delete选项

比前面两个更有效率。

find /tmp -depth -name core -type f -delete

Find files named core in or below the directory /tmp and delete them, but more
efficiently than in the previous example (because we avoid  the  need  to  use
fork(2) and exec(2) to launch rm and we don't need the extra xargs process).

查找文件并执行的shell命令的更多相关文章

  1. Java利用 ganymed-ssh2-build.jar来上传文件到linux以及下载linux文件以及执行linux shell命令

    package api; import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOExcepti ...

  2. Android 执行 adb shell 命令

    Android 执行Adb shell 命令大多需要root权限,Android自带的Runtime. getRuntime().exec()容易出错,在网上找到了一个执行adb shell命令的类 ...

  3. recovery 升级过程执行自定义shell命令

    有时候我们需要,在升级的过程中,执行一些shell命令,来完成我们的一些需求,利用升级过程,进行一些特殊化的操作,思路如下: 第一: 把我们需要执行的命令,写成一个test.sh脚本,然后在recov ...

  4. shell脚本--php执行普通shell命令

    这里只演示一些普通的shell命令,一些需要root用户权限执行的命令,请参考:php以root权限执行shell命令 php执行shell命令,可以使用下面几个函数: string system ( ...

  5. 【Devops】【docker】【CI/CD】关于jenkins构建成功后一步,执行的shell命令详解+jenkins容器运行宿主机shell命令的实现方法

    1.展示这段shell命令 +详解 #================================================================================= ...

  6. 统计行数、文件夹个数、文件个数的相关shell命令

    极客君最近做项目,刚好遇到需要统计一些sql文件数量的问题,用到一些实用的shell命令,记录下来,以后万一还能用上呢? 如果在终端不打开文件看到一共多少行,则可以使用wc命令来实现: wc -l [ ...

  7. 在Jenkins中配置执行远程shell命令

    1.想要 远程登录到linux服务器并执行相应的shell脚本,需要在jenkins上安装插件enkins SSH plugin 2. 安装了这个插件后,进入系统的配置管理中配置 SSH remote ...

  8. 在docker中执行linux shell命令

    在docker中执行shell命令,需要在命令前增加sh -c,例如: docker run ubuntu sh -c 'cat /data/a.txt > b.txt' 否则,指令无法被正常解 ...

  9. [Python2.x] 利用commands模块执行Linux shell命令

    用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要 ...

随机推荐

  1. 如何解包,编辑,重新打包boot images

    HOWTO: Unpack, Edit, and Repack Boot Images http://forum.xda-developers.com/showthread.php?t=443994 ...

  2. Nginx 报错: nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) 的解决方法

    今天测试域名访问不了,登陆 Linux(Ubuntu)重启Nginx: nginx -s reload 结果报错: nginx: [error] open() : No such file or di ...

  3. MySQL 命令行导出、导入Select 查询结果

    <!-- 环境: Windows 2003 SP2 + MySQL5.5.28 Author: 博客园小dee --> 有的时候需要把在一张表中用 select 语句查询出来的结果保存到另 ...

  4. 20145235《Java程序设计》课程总结

    每周读书笔记链接汇总 20145235<Java程序设计>第1周学习总结 20145235<Java程序设计>第2周学习总结 20145235<Java程序设计>第 ...

  5. C#创建Excel

    创建Workbook说白了就是创建一个Excel文件,当然在NPOI中更准确的表示是在内存中创建一个Workbook对象流. 本节作为第2章的开篇章节,将做较为详细的讲解,以帮助NPOI的学习者更好的 ...

  6. 性能监控工具nmon

    工具集: Nmon:性能数据收集分析工具 Nmon analyser:性能数据分析工具,excel文件 nmon概述:     nmon是收集AIX或Linux主机的性能数据并分析的工具,使用简单易用 ...

  7. pointer

    https://en.wikipedia.org/wiki/Pointer_(computer_programming) In computer science, a pointer is a pro ...

  8. Java 常见问题思考

    Java中的成员变量是选择在声明时赋值还是在构造函数中赋值? // 通过构造函数赋值 public class UserRequestImpl extends ModuleImplBase { pri ...

  9. mysql ERROR 1045 (28000): Access denied for user解决方法 (转)

    问题重现(以下讨论范围仅限Windows环境): C:\AppServ\MySQL> mysql -u root -pEnter password:ERROR 1045 (28000): Acc ...

  10. [daily][CentOS][yum] 删除包的同时一同清理掉安装时一起装进来的依赖包

    说起来有点绕口,这个需求是这样的. 就是我yum装A包的时候,同时安装了A的依赖包a1,a2,a3. 当我们使用yum remove A卸载A包的是,a1,a2,a3包并不会一同被卸载掉.如果他们没有 ...