Linux文件管理知识查找文件(第二篇)
Linux文件管理知识:查找文件(第二篇)
上篇文章详细介绍了linux系统中查找文件的工具或者命令程序locate和find命令的基本操作。那么,今天这篇文章紧接着查找文件相关操作内容介绍。
Find命令所属操作列表中的条目,有助于我们想要的结果输出。上篇文章已讲到find 命令是基于搜索结果来执行操作命令程序。
预定义操作描述:
操作 |
描述 |
-delete |
删除当前匹配的文件 |
-ls |
对匹配的文件执行等同的ls -dils 命令。并将结果发送到标准输出 |
|
把匹配文件的全路径名输送到标准输出。如果没有指定其它操作,这是默认操作 |
-quit |
一旦找到一个匹配,退出 |
例如:
find ~
find ~ -print
//此命令将home家目录中包含的每个文件和子目录输出。以一个列表的形式输出。两种命令的输出完全一致。
删除特定条件的文件
使用find 命令可以删除符合一定条件的文件。
例如:
find ~ -type f -name '*.BAK' -delete
//删除扩展名为“.BAK”(这通常用来指定备份文件)的文件, 在用户家目录及它的子目录下搜索以.BAK 结尾的文件名。一旦以.BAK 结尾的文件被找到后,就删除它们。
备注:当使用-delete 操作命令时,你肯定会格外小心。那我们怎么做更妥当呢?妥当的做法是我们可以先使用print程序命令测试下,是否符合我们要的搜索结果。
逻辑关系—逻辑运算符
例如:
find ~ -type f -and -name '*.BAK' -and -print
这个程序命令一旦被执行,它就会搜索以.BAK后缀的相关文件,并将符合条件文件的相对路径名称标准输出给我们。命令执行的原因是由每个测试和操作之间的逻辑关系决定的。
那么逻辑运算符是如何影响命令如何执行的呢?
测试/行为 |
只有... 的时候,才被执行 |
|
只有-type f and -name ’*.BAK’ 为真的时候 |
-name |
‘*.BAK’ 只有-type f 为真的时候 |
-type f |
总是被执行,因为它是与-and 关系中的第一个测试/行为 |
此表可以看出测试和行为之间的逻辑关系决定了哪一个会被先执行,同时测试和行为的顺序也很重要。
我们重新调整下测试和行为之间的顺序:让-print 行为是第一个,那么结果会截然不同:
例如:
find ~ -print -and -type f -and -name '*.BAK'
上述命令会输出每个文件(-print 行为总是为真),然后才是测试文件类型和指定的文件扩展名。
用户定义操作
除了预定义的操作外,我们可以调用任意的命令。通常情况下是通过-exec 命令。
例如:
-exec command {} ;
command 代表一个命令的名字,{} 代表当前路径名的符号表示,分号代表必要的分隔符,表明命令的结束。
当然,如何交互式地执行一个用户定义的操作行为?通过使用-ok 操作来代替-exec,它在执行每个指定的命令之前,会提示用户:
find ~ -type f -name 'foo*' -ok ls -l '{}' ';'
< ls ... /home/me/bin/foo > ? y
-rwxr-xr-x 1 me me 224 2007-10-29 18:44 /home/me/bin/foo
< ls ... /home/me/foo.txt > ? y
-rw-r--r-- 1 me me 0 2008-09-19 12:53 /home/me/foo.txt
Xargs命令
xargs 命令的用法—将标准输入或管道构造的参数列表转换成某一特定命令的参数列表并运行该特定命令。通俗的来讲就是xargs取其中一个命令的输出结果作为另外一个命令的参数列表来执行。对于我们的例子,我们可以这样使用它:
find ~ -type f -name 'foo*' -print | xargs ls -l
-rwxr-xr-x 1 me me 224 2007-10-29 18:44 /home/me/bin/foo
-rw-r--r-- 1 me me 0 2008-09-19 12:53 /home/me/foo.txt
这里我们可以得到一个结论:
find命令的执行结果通过管道符|传递给xargs命令,然后,xargs命令将find命令的输出结果作为ls命令的参数,最后再执行ls -l命令。
备注:当某一命令行中的参数列表数量是有限制的,一旦超过linux系统支持的最大长度时,那么xargs命令将会执行该命令,然后一直重复这个过程直到耗尽标准输入。
接下来咱们再看下如何创建一个包含许多子目录和文件:
[root@linuxprobe~]$ mkdir -p playground/dir-{00{1..9},0{10..99},100}
[root@linuxprobe~]$ touch playground/dir-{00{1..9},0{10..99},100}/file-{A..Z}
Linux命令的强大功能真是令人惊叹啊!仅仅用了这两行命令,就可以创建一个包含一百个子目录,而且每个子目录中包含了26 个空文件。
现在咱们看看Linux命令是如何实现这个奇迹的!
一个简单的mkdir命令,一个特异的shell 扩展(花括号)包括一个touch命令。通过组合mkdir 命令和-p 参数选项(导致mkdir 命令创建指定路径的父目录),以及花括号,这样的话就能够创建一百个目录。
备注:touch命令通常是用来设置或更新文件的访问,更改,和修改时间的属性。
今天关于linux系统文件查找命令的运用介绍就暂时结束了。locate,updatedb,find 和xargs 命令都是GNU 项目findutils的一部分。这个GUN 项目提供了大量的相当出色的在线文档,我们都需要好好拜读下这些文档。所以强烈建议大家可以参考下《linux就该这么学》这本书,对于linux系统文件管理层面的介绍很详细!
Linux文件管理知识查找文件(第二篇)的更多相关文章
- 3种方法来在Linux电脑上查找文件
如果你不太了解Linux命令,那么在Linux系统里查找文件是比较困难的.只要使用多种不同的终端命令,可以很快地找到文件.Linux命令比其它操作系统的搜索功能更加强大,掌握这些命令就能你完全控制这些 ...
- Linux按照时间查找文件
linux按照时间查找文件 需要用到一个根据最后修改时间来处理的脚本. 前面有个有关find的基本用法,根据文件大小,类型什么的,这个是关于时间的. linux 文件的三种时间(以 find 为例) ...
- Linux系统下查找文件的方法
Linux系统下查找文件的方法 作者:Vashon 时间:20150419 方法一.在当前目录里查找所有名为以 java 开头的文件: find ./ -name "java*" ...
- Linux基础知识之文件的权限(一)
Linux基础知识之文件权限(一) Linux优点之一就是它拥有多用户多任务的环境,在提供文件共享的同时也能保证用户文件的安全性.所以,设置文件的权限管理变得尤为重要. 权限讲解 [der@Der ~ ...
- Linux系统文件系统及文件基础篇
学习Linux,重难点在于掌握不同类别的文件系统及其作用.通过对Linux系统的安装,我们首先来了解下Linux系统里各个目录文件夹下的大致功能:主要的目录树的有/./root./home./usr. ...
- Linux下相关查找文件命令(find locate which whereis type)
以下内容摘自:http://blog.csdn.net/jessica1201/article/details/8139249 标注的内容为自己的补充: 我们经常需要在系统中查找一个文件,那么在lin ...
- linux文件管理之查找
1 文件查找 1.1 which 查找可执行文件的路径which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件[root@www ~]# which [-a] com ...
- Linux如何搜索查找文件里面内容
在Linux系统当中,如何搜.索查找文件里面的内容呢? 这个应该是系统维护.管理当中遇到最常见的需求.那么下面介绍,总结一下如何搜索.查找文件当中的内容. 搜索.查找文件当中的内容,一般最常用的是gr ...
- Linux里如何查找文件内容
Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件g ...
- Linux里如何查找文件内容 (转)
Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件g ...
随机推荐
- openlayers获取绘制多边形的顶点坐标
虽使用Interaction无数次,进行图形绘制与用户交互等,但当需要获取绘制图形的顶点坐标时还是不晓得咋弄? 都知道在绘制完成后回调中能获取到当前的event对象draw.on('drawend', ...
- 泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~
最近在做AIGC的项目,不过是与图片相关的,现在的模型效果可比前几年图片替换效果好多了.之前尝试过用 faceswap 工具来进行人脸替换的,具体可以参看下我之前的这篇文章:https://blog. ...
- ODDO之三 :Odoo 13 开发之创建第一个 Odoo 应用
Odoo 开发通常都需要创建自己的插件模块.本文中我们将通过创建第一个应用来一步步学习如何在 Odoo 中开启和安装这个插件.我们将从基础的开发流学起,即创建和安装新插件,然后在开发迭代中更新代码来进 ...
- flutter 的 in_app_web_view实现下载功能
flutter与前端交互,利用in_app_web_view实现下载功能: 首先下载库,终端输入 flutter pub add flutter_inappwebview 之后导出 import 'p ...
- WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(6)
WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...
- spark连接mysql数据库
1.安装启动检查Mysql服务.netstat -tunlp (3306) 2.spark 连接mysql驱动程序. –cp /usr/local/hive/lib/mysql-connector-j ...
- Min-25 筛学习笔记
Min-25 筛学习笔记 \(\text{By DaiRuiChen007}\) 一.简要介绍 Min-25 筛,是一种能在亚线性时间内求出特定的一类积性函数 \(f(i)\) 的前缀和的算法. 具体 ...
- .NET 5 的烦恼
由于微软工程师的辛勤脑洞和劳作,.NET 生态如何演变完全看他们的决策,其中包含社区吸纳内容.团队讨论结果等等,不乏一些工程师.架构师偏好,很难摸得准. 就比如这一次未来规划,他们希望将 .NET ...
- Microsoft Azure中用户注册、应用注册、授权
背景 利用Microsoft Azure中令牌授予流读取登录用户信息(UserInfo),实现应用的单点登录: 1. 用户注册 此处用户注册,可以理解为一个管理员级别的用户注册: 点击注册:Azure ...
- 解读XML - Foreach循环
<foreach item="item" index="index" collection="supplyIdAry" open=&q ...