find . -name ”*.c" -exec ./command.sh {} \;

本次实验将介绍 Linux 命令中 find 和 xargs 命令的用法。

  • find
  • xargs

1.find

find命令主要作用是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。Linux下find命令提供了相当多的查找条件。功能强大,对应学习难度也比较大!

【命令格式】:find [选项] [搜索路径] [表达式]

默认路径是当前目录,默认表达式是-print

表达式可能由下列组成:操作符、选项、测试表达式、动作等。

【常用参数】:

-print:find命令将匹配的文件输出到标准输出
-exec:对匹配的文件执行该参数所给出的shell指令
-name:按照文件名查找文件
-type:查找某一类型的文件
-prune:使用这一选项可以让find命令不再当前指定的目录中查找,如果同时用-depth选项,那么-prune将被find命令忽略
-user:按照文件属主来查找文件
-group:按照文件所属的组来查找文件
-mtime -n +n:按照文件的更改时间来查找文件 -n表示文件更改时间距现在小于n天,+n表示大于n天,find命令还有-atime和-ctime选项

【常用范例】:
1.打印当前目录下的文件目录列表
find . -print

2.打印当前目录下所有以.txt结尾的文件名

find . -name "*.txt" -print

-iname 选项跟-name 选项作用一样,不同在于-iname 会忽略字母大小写。

3.打印当前目录下所有以.txt 或.pdf结尾的文件名

find . \(-name "*.pdf" -or -name "*.txt" \)

4.打印当前目录下所有不以.txt结尾的文件名

find . ! -name "*.txt"


find(二)

下面将介绍如何根据文件类型、权限、所有者及操作符来查找匹配文件。

根据文件类型来查找文件,使用-type 选项,常见 find 文件类型见下表。

根据文件权限查找文件,使用-perm 选项。所有者使用-user 选项。

另外,find 命令可以通过逻辑操作符来创建更复杂的逻辑关系,例如 find 命令(一)中的例三就使用了操作符-or。find 命令的逻辑操作符见下表。

【常用范例】:

1.打印当前目录下所有以.txt结尾的符号链接

find . -type l -name "*.txt" -print

2.打印当前目录下所有权限为777的php文件(web服务器的php文件一般需要执行权限)

find . -type f -name "*.php" -perm 777

3.打印当前目录下root用户拥有的所有文件

find . -type f -user root

4.打印当前目录下权限不是777和664的所有文件

find . -type \( ! -perm 777 -and ! -perm 644 \)


find(三)

-exec选项实现对查找到的文件执行指定的动作命令

【常见范例】:

1.找到当前目录下所有php文件,并显示详细信息

find . -name "*.php" -exec ls -l {} \;

-exec 是 find 命令对找到的文件执行的动作,这个动作就是对找到的文件执行命令,上面的命令就是 ls -l {}。在这里说明一下{}和;,{}其实它就是一个占位符,在 find 命令的执行过程中会不断地替换成当前找到的文件,相当于”ls -l 找到的文件”。而;是-exec 的命令结束标记,因为规定-exec 后面的命令必须以;结束,但;在 shell 中有特殊含义,必须要转义,所以写成;。

例二:在实验楼环境中有很多自己编写的 c 语言代码文件,现在想要把所有 c 语言代码文件下载下来,如果一个一个的下载很麻烦,我们可以先查找到所有的 c 语言代码文件,然后将这些文件内容写入到一个文件中,下载该文件,可以使用如下命令:

find . -name "*.c" -exec cat {} \; > all.c

例三:默认下,-exec 后面只能使用单个命令,如果想要多个命令,可以将多个命令写入脚本文件中,然后在-exec 中使用这个脚本,可以使用如下命令

find . -name "*.c" -exec ./command.sh {} \;

脚本内容:#! /bin/bash
ls -l $1       # $1 表示第一个参数
cat $1


xargs 命令

我们可以用管道将一个命令的 stdout(标准输出)重定向到另一个命令的 stdin(标准输入)。但有些命令只能以命令行参数的形式接收数据,而无法通过 stdin 接收数据流。在这种情况下,无法通过管道将数据重定向给这些命令。

这时 xargs 就可以发挥它的作用了,xargs 命令可以从标准输入接收输入,并把输入转换为一个特定的参数列表。

(1)命令格式

command | xargs [选项] [command]

xargs 命令应该紧跟在管道操作符之后,因为它以标准输入作为主要的源数据流。

(2)常用参数

参数 描述
-n 指定每行最大的参数数量
-d 指定分隔符

(3)常用范例

例一:将多行输入转换为单行输出,可以使用如下命令:

cat a.txt | xargs

例二:将单行输入转换为多行输出,可以使用如下命令:

echo "1 2 3 4 5 6 7" | xargs -n 3

例三:将单行输入转换为多行输出,指定分隔符为 i,可以使用如下命令:

cat b.txt | xargs -d i -n 3

例四:查找当前目录下所有 c 代码文件,统计总行数,可以使用如下命令:

find . -type f -name "*.c" | xargs wc -l

转载于:https://www.cnblogs.com/Roni-i/p/10141009.html

Linux操作命令(五)相关推荐

  1. Linux操作命令分类详解 - 用户权限(三)

    转自:Linux操作命令分类详解 - 用户权限(三),更优阅读体验:http://www.kongzid.com/ 目录 系列文章 1.用户账号管理 1.1 useradd/adduser 添加用户账 ...

  2. Linux操作命令(六):wc、grep

     Linux命令实例练习 一.实验介绍 1.1 实验内容 1.2 实验知识点 1.3 实验环境 二.实验步骤 2.1 wc 命令 2.2 grep 命令 2.3 正则表达式与 grep 命令 三.参考 ...

  3. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    [正文开始] 上文接<sed的流艺术之三>-linux命令五分钟系列之二十三 例十 如果设定了很多-e的command,它们的执行顺序是怎样的呢? [rocrocket@rocrocket ...

  4. Linux(五):Ubuntu 16.04 更改系统语言为简体中文(Chinese simplified)

    Linux(五):Ubuntu 16.04 更改系统语言为简体中文(Chinese simplified) 文章目录 1 问题 2 设置中文 2.1 设置: 2.2 点击 Install: 2.3 输 ...

  5. Linux的五个查找命令

    原文地址http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html Linux的 ...

  6. 从零开始的linux 第五章

    从零开始的linux 第五章 (咚咚咚...)路人甲:"小编!!快起床!!今天该讲课啦!" (迷迷糊糊且衣冠不整的小编去开门) 路人甲:"小...小编大人...你都让我这 ...

  7. Linux 下五个顶级的开源命令行 Shell

    这个世界上有两种 Linux 用户:敢于冒险的和态度谨慎的. 其中一类用户总是本能的去尝试任何能够戳中其痛点的新选择.他们尝试过不计其数的窗口管理器.系统发行版和几乎所有能找到的桌面插件. 另一类用户 ...

  8. 《神探tcpdump第五招》-linux命令五分钟系列之三十九

    == [系列文章] <神探tcpdump第一招>-linux命令五分钟系列之三十五 <神探tcpdump第二招>-linux命令五分钟系列之三十六 <神探tcpdump第 ...

  9. Linux操作命令(下)

    Linux操作命令(八) 1)sort命令 sort命令能够帮助我们对文本文件和stdin进行排序操作 1.1. 命令格式 sort [选项] [文件名] 1.2. 常用参数 -n 基于字符串的长度来 ...

  10. 【黑马Python】linux操作命令(2)

    linux操作命令 文件内容命令 cat和more的基本使用和对比 cat命令的-b和-n选项输出行号 grep查找文件内容 grep行首/行尾的模式查找 其他命令 echo和重定向 管道的概念和基本 ...

最新文章

  1. Python函数及其参数
  2. excel 运算符在php里不起作用,目标单元格引用无效是什么意思
  3. 凭兴趣求职80%会失败,为什么
  4. Laravel5.4重新登陆跳转到登陆前页面的原理和实现
  5. 求 1-100 之间不能被 3 整除的数之和
  6. react和react2_为什么React16是React开发人员的福气
  7. jQuery——入门(四)JQuery 事件
  8. 曾经辉煌无限,如今员工持续大量流失,集团目前仅剩10余人
  9. Nginx 下部署 HTTPS 与安全调优
  10. fiddler https
  11. 通过python读取ini配置文件
  12. idea 快捷键大全
  13. php录音功能,h5做出网页录音功能
  14. 《云边有个小卖部》的优秀读后感作文2100字
  15. 推土机(快排)荷兰国旗思路
  16. pve rust 能拆家吗_文明重启有哪些游戏模式应该怎么玩
  17. DataGrip使用(一)安装图文详细版(5月19更新)
  18. Ogre Giles
  19. 玩转ECS第6讲 | 弹性计算 Region 化部署和跨可用区容灾介绍
  20. 2019_SIGIR_A Neural Influence Diffusion Model for Social Recommendation

热门文章

  1. Python中的self和init
  2. 项目IDEA启动配置
  3. 在Java中用SHA1WithRSA创建的签名如何在.NET中验证
  4. pytest框架学习
  5. 20161129 计算95除以55,商是多少,余数是多少?(商和余数要求分两行显示)
  6. Metadata Lock原理5
  7. mysql数据库之事务和隔离级别
  8. 项目经理在项目各阶段的工作重点-更新版
  9. 超越阿里云,华为云网络服务竟然这么厉害!
  10. 接口测试工具-Jmeter使用笔记(六:从文本读取参数)