Linux文件管理知识:查找文件(第二篇)

上篇文章详细介绍了linux系统中查找文件的工具或者命令程序locate和find命令的基本操作。那么,今天这篇文章紧接着查找文件相关操作内容介绍。

Find命令所属操作列表中的条目,有助于我们想要的结果输出。上篇文章已讲到find 命令是基于搜索结果来执行操作命令程序。

预定义操作描述:

操作

描述

-delete

删除当前匹配的文件

-ls

对匹配的文件执行等同的ls -dils 命令。并将结果发送到标准输出

-print

把匹配文件的全路径名输送到标准输出。如果没有指定其它操作,这是默认操作

-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后缀的相关文件,并将符合条件文件的相对路径名称标准输出给我们。命令执行的原因是由每个测试和操作之间的逻辑关系决定的。

那么逻辑运算符是如何影响命令如何执行的呢?

测试/行为

只有... 的时候,才被执行

-print

只有-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系统文件管理层面的介绍很详细!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 介绍

一.Redis 介绍 Redis 和 Memcached 都是非关系型数据库也称为 NoSQL 数据库&#xff0c;MySQL、 Mariadb、SQL Server、PostgreSQL、Oracle 数据库属于关系型数据 关系型数据库(RDBMS, Relational Database Management System)。 1.1 Redis 介绍 Redis(Remote Dictionary Se…

Hadoop HA模式切换

Hadoop HA模式下 主从的切换&#xff08;操作命令&#xff09; YARN HA 获取所有RM节点的状态 yarn rmadmin -getAllServiceState获取 rm1 节点的状态 yarn rmadmin -getServiceState rm1手动将 rm1 的状态切换到STANDBY yarn rmadmin -transitionToStandby rm1 ##或者 y…

【LeetCode-中等题】236. 二叉树的最近公共祖先

文章目录 题目方法一&#xff1a;后序遍历 回溯 题目 方法一&#xff1a;后序遍历 回溯 解题的核心就是&#xff1a;采用后序遍历 讨论p&#xff0c;q是否在当前的root的两边&#xff0c;如在两边则返回当前节点root 如何不在两边&#xff0c;只要出现一个节点等于p或者q就…

OpenCV

文章目录 OpenCV学习报告读取图片和网络摄像头1.1 图片读取1.2 视频读取1.1.1 读取视频文件1.1.2读取网络摄像头 OpenCV基础功能调整、裁剪图像3.1 调整图像大小3.2 裁剪图像 图像上绘制形状和文本4.1 图像上绘制形状4.2图像上写文字 透视变换图像拼接颜色检测轮廓检测人脸检测…

前端无需install快速调试npm包,Console-Import使用

Console-Import是一个Chrome扩展插件&#xff0c;可以方便地从Chrome控制台导入JavaScript和CSS资源。它可以帮助我们在开发过程中快速调试和测试第三方库或代码。 下载地址 安装 要安装Console-Import&#xff0c;请在Chrome网上应用店搜索“Console-Import”&#xff0c;然…

微信小程序发布一个npm包

参考:https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html 同npm一样流程 npm install weixin_heath_apis

使用Redis统计网站的UV/DAU

HyperLogLog/BitMap 统计UV、DAU需要用到Redis的高级数据类型 M public class RedisKeyUtil {private static final String PREFIX_UV "uv";private static final String PREFIX_DAU "dau";// a single days UVpublic static String getUVKey(String …

MySQL 8.1.0 推出 InnoDB Cluster 只读副本

全面了解 8.1.0 版本新功能&#xff1a;InnoDB Cluster 只读副本的相关操作。 作者&#xff1a;Miguel Arajo 高级软件工程师 / Kenny Gryp MySQL 产品总监 本文来源&#xff1a;Oracle MySQL 官网博客 * 爱可生开源社区出品。 前言 MySQL 的第一个 Innovation 版本 8.1.0 已…

基于JAVA SpringBoot和HTML婴幼儿商品商城设计

摘要 随着网络技术的发展与普遍,人们的生活发生了日新月异的变化,特别是计算机的应用已经普及到经济和社会的各个领域.为了让消费者网上购物过程变得简单,方便,安全,快捷,网上商城购物成了一种新型而热门的购物方式。网上商城在商品销售的发展中占据了重要的地位,已成为商家展示…

【Hello Algorithm】链表相关算法题

本篇博客介绍&#xff1a; 介绍下链表相关的算法题 链表相关算法题 快慢指针回文结构链表将单向链表按某值划分为左边小&#xff0c;中间相等&#xff0c;右边大的形式复制带随机指针的链表 链表相关的算法题其实都算不上难 我们真正要考虑的是一些边界问题 事实上链表题就是在…

【大数据】数据湖:下一代大数据的发展趋势

数据湖&#xff1a;下一代大数据的发展趋势 1.数据湖技术产生的背景1.1 离线大数据平台&#xff08;第一代&#xff09;1.2 Lambda 架构1.3 Lambda 架构的痛点1.4 Kappa 架构1.5 Kappa 架构的痛点1.6 大数据架构痛点总结1.7 实时数仓建设需求 2.数据湖助力于解决数据仓库痛点问…

5 大虚拟数字人工具:视频内容创作的未来

人工智能&#xff08;AI&#xff09;给视频内容创作领域带来了一场革命。这一领域的显着进步之一是人工智能生成的会说话的化身的出现&#xff0c;它已经成为制作高质量视频的游戏规则改变者&#xff0c;而无需专业演员或昂贵的视频编辑软件。在这篇博文中&#xff0c;我们将深…

python用 xlwings库对Excel进行 字体、边框设置、合并单元格, 版本转换等操作

xlwings 其他的一些单元格读取写入操作网上很多&#xff0c; 下面就写些如何设置单元格的 字体对齐&#xff0c;字体大小、边框&#xff0c; 合并单元格&#xff0c; 这些设置。 import xlwings as xwapp xw.App(visibleTrue, add_bookFalse) app.display_alerts False #…

leetcode455. 分发饼干 【贪心】

题目&#xff1a; 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c…

Latex-遇到的各种公式

用的是OverLeaf。 Sigmoid的写法 \begin{equation} \sigma(x) \frac{1}{1 e^{-x}} \end{equation} Softmax的写法 \begin{equation} \sigma(t)_i \frac{e^{t_i}}{\sum\limits_{j1}^{N}e^{t_j}} \end{equation} 下标 用_符号 例子&#xff1a;argmax_y 上标 用^符号…

一次性重复性采购供应商

在企业采购的活动中&#xff0c;有很多物料的采购都是通过一次性的采购进行的&#xff0c;此类的采购活动基本不会重复的进行。这种类型的采购&#xff0c;就叫做一次性采购。提供此种采购的供应商&#xff0c;企业一般不需要对他进行一个复杂的认证工作&#xff0c;而应该以效…

算法系列-力扣876-求链表的中间节点

# 求链表中间节点&#xff0c;如果有两个中间节点取后面那个 链表定义 // lc codestart /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val val; } * …

java八股文面试[多线程]——一个线程两次调用start()方法会出现什么情况

典型回答&#xff1a; Java 的线程是不允许启动两次的&#xff0c;第二次调用必然会抛出 IllegalThreadStateException&#xff0c;这是一种运行时异常&#xff0c;多次调用 start 被认为是编程错误。 通过线程的状态图&#xff0c;在第二次调用 start() 方法的时候&#xff…

推荐Java开发常用的工具类库google guava

Guava Guava是一个Google开源的Java核心库&#xff0c;它提供了许多实用的工具和辅助类&#xff0c;使Java开发更加简洁、高效、可靠。目前和hutool一起&#xff0c;是业界常用的工具类库。shigen也比较喜欢使用&#xff0c;在这里列举一下常用的工具类库和使用的案例。 参考…

发表于《自然》杂志:语音转文本BCI的新突破实现62字/分钟的速度

语音脑机接口&#xff08;BCI&#xff09;是一项创新技术&#xff0c;通过用户的大脑信号在用户和某些设备之间建立通信通道&#xff0c;它们在恢复残疾患者的言语和通信能力方面具有巨大潜力。 早期的研究虽然很有希望&#xff0c;但尚未达到足够高的精度来解码大脑活动&…