Linux实战一天一个小指令--《文件管理/文件查找》

阿丹:

        作为一个java程序员进行实战开发不接触linux操作系统基本上是不可能的,所以这个专题就出现了,本文章重点解决大家关于文件管理以及文件查找查看的疑惑。我将采用语法+基础用法并在下面进行高级语法的总结使用,方便大家学习和使用。

一、操作文件的基本命令

  1. 创建新文件/重命名文件:

    • touch 文件名 # 创建新文件 (若不存在则创建)
    • mv 老文件名 新文件名 # 重命名文件
      touch test.txt              # 创建名为test.txt的新文本文件
      mv oldfile newfile         # 将oldfile重命名为newfile
  2. 删除文件:

    • rm 文件名 # 删除文件
    • rm -rf 目录名 # 删除非空目录及其所有内容
      rm test.txt                 # 删除名为test.txt的文件
      rm -rf testdir             # 删除名为testdir的非空目录及其所有内容
  3. 查看文件内容:

    • cat 文件名 # 查看纯文本文档内容
    • less 文件名 # 分页查看文档内容并支持上下滚动
      cat test.txt                # 查看名为test.txt的文本文件内容
      less test.txt              # 分页查看名为test.txt的文本文件内容
  4. 复制文件/移动文件:

    • cp 文件名 目标位置 # 复制文件
    • cp -r 目录名 目标位置 # 复制整个目录
    • mv 文件名 目标位置 # 移动文件
      cp test.txt /home/user/Desktop/  # 将名为test.txt的文件复制到桌面
      cp -r testdir /home/user/Documents/  # 将名为testdir的整个目录复制到Documents文件夹
      mv test.txt /home/user/Documents/test.txt  # 将名为test.txt的文件移动到Documents文件夹中
  5. 重定向输出:

    • command > file # 将command的结果输出到file中(追加)
    • command >> file # 将command的结果输出到file中(覆盖)
      ls -l > files.txt           # 将ls -l命令的结果输出到files.txt文件中(追加)
      ls -l >> files.txt           # 将ls -l命令的结果输出到files.txt文件中(覆盖)
  6. 通配符:

    • ? # 匹配任意单个字符
    • # 匹配任意长度的任意字符序列
    • [list] # 匹配括号内的任何一个字符
    • [range] # 匹配括号内指定范围内的任何一个字符
    • {list} # 匹配括号内的任何一个字符串
      ls *.txt                    # 显示当前目录下所有的.txt结尾的文件
      ls [0-9].txt               # 显示当前目录下以数字开头后缀为.txt的文件

二、查看文件详细信息

  1. ls 命令:

    • ls # 显示当前目录下的所有文件列表
    • ls -l # 长格式显示详细文件属性
    • ls -a # 显示包括隐藏文件在内的所有文件
      ls                           # 显示当前目录下的所有文件列表
      ls -l                        # 长格式显示详细文件属性
      ls -a                       # 显示包括隐藏文件在内的所有文件
  2. stat 命令:

    stat 文件名 # 显示文件详细信息,如权限、大小、所有者、修改时间等
    stat test.txt      # 显示名为test.txt的文件详细信息

三、文件查找

 find 命令:

find 起始位置 条件 操作 # 在起始位置根据条件进行文件查找并执行相应操作

find . -type f # 查找当前目录及其子目录下的所有普通文件

find / -size +1M # 查找根目录下大于1MB的文件

find . -name "test*" # 查找以"test"开头的文件

find /home/user/ -type f        # 查找/home/user/目录及其子目录下的所有普通文件
find / -size +1M                # 查找根目录下大于1MB的文件
find . -name "test*"             # 查找以"test"开头的文件

具体参数:

  • -name pattern:查找与指定名称模式匹配的文件。
  • -type c:查找具有指定类型的文件。其中c可能是f(普通文件)、d(目录)、b(块设备)、c(字符设备)或p(管道文件)。
  • -perm mode:查找具有指定权限的文件。
  • -mtime n:查找在n天前被更改过的文件。这里的n可以是一个正数(表示找到最近n天内更改过的文件),也可以是一个负数(表示找到至少n天之前更改过的文件)。例如,-mtime 7会查找过去一周内更改过的文件,而-mtime -7会查找七天前或更早更改过的文件。
  • -size n[cwb]:查找文件大小符合指定条件的文件。这里的n可以是整数值,后面可以跟c(字节)、w(双字节字)或b(512字节块)作为单位。

下面的命令会查找当前目录及其所有子目录中在过去一天内被更改过的文件:

find . -mtime 1

 另外,find命令还可以与其他命令结合使用,比如与ls命令配合以查看查找结果。如下所示,这个命令将列出当前目录及其子目录中所有以".txt"结尾的文件:

find . -name "*.txt"

locate 命令:

locate 文件名 # 根据已编译好的数据库查找文件

locate test.txt          # 查找名为test.txt的文件

具体参数:

 locate命令是用来查找文件或目录路径的工具,其优点是速度比find命令要快得多,因为它使用的是预先建立好的文件索引数据库。以下是一些常用的locate命令参数:

  • -i:忽略大小写。
  • -q:静默模式,在输出时不打印任何错误消息或警告。
  • -n:限制输出的数量。
  • -b:在每个输出行前面加上字节数偏移量。
  • -e:避免匹配表达式的开始和结束部分出现的所有元字符。

下面的命令将列出所有以".txt"结尾的文件:

locate "*.txt"

 如果你想同时查找多个文件或文件夹,可以在参数中添加多个名字,如下所示:

locate test.txt images/

 如果你想限制输出的数量,可以使用-n选项:

locate -n 5 ".txt"    # 输出前5个匹配项

 要排除特定文件类型或目录,可以使用!符号:

locate ! ".*" ".txt"    # 查找不包含"."的".txt"文件

如果要在查找结果中过滤掉一些特定目录,可以使用-not选项:

locate -not "/var/log/" ".log"

 需要注意的是,locate命令默认使用的数据库可能不是最新的,可以通过运行updatedb命令来更新数据库。不过由于更新数据库需要一定的时间,所以这通常在后台任务计划中定期完成。如果你想立即更新数据库,可以使用以下命令:

sudo updatedb

这样就可以确保locate命令能够找到最新添加或删除的文件了。 

where is 命令:

whereis 文件名 # 查找可执行文件、源码文件和帮助文件

whereis ls             # 查找ls的可执行文件、源码文件和帮助文件

 详细参数:

whereis命令主要用于查找特定文件在系统的具体位置,它可以查找出指定命令的二进制文件、源代码文件和man页面文件的具体位置。以下是whereis命令的一些常用参数:

  • -b:仅显示二进制文件的位置。
  • -s:仅显示源文件的位置。
  • -m:仅显示man页面的位置。
  • -u:显示未安装的源代码包的位置。
  • -B:指定查找二进制文件的位置。
  • -M:指定查找man页面的位置。

下面的命令会显示出ls命令的二进制文件、源代码文件和man页面文件的位置:

whereis ls

 下面的命令会只显示ls命令的二进制文件位置:

whereis -b ls

 下面是仅查找ls命令的man页面的位置:

whereis -m ls

 如果你想要自定义查找位置,可以使用-B-M选项。例如:

whereis -B /usr/local/bin ls

 这段代码将只会显示/usr/local/bin目录中的ls命令的二进制文件位置。同样地,你也可以通过类似的方式指定man页面的查找位置。

注意:你可以将ls替换为你想要寻找的任何文件名或命令!!!!

grep 命令:

grep "string" filename # 在filename文件中查找包含指定字符串的行

grep "hello" test.txt  # 在test.txt文件中查找包含hello的行

追加补充说明-组合使用进阶用法:

find, locate, whereisgrep 是一些用于在 Linux 中搜索文件的强大工具。它们可以单独使用,但通常也会结合在一起使用以提高效率。以下是一些示例来演示如何将它们组合起来:

  1. 使用 locate 来快速搜索文件,然后使用 find 来深入查找文件的内容:
    # 使用 locate 找到文件
    locate filename.txt# 使用 find 进一步筛选文件
    find /path/to/folder -name filename.txt
  2. 使用 whereis 来查找程序及其相关文件:
    whereis ls
    # 上面命令会返回 ls 的 bin, src, manpage 等信息
  3. 使用 find 来查找匹配特定模式的文件,并使用 grep 来进一步过滤结果:
    # 查找所有 txt 文件中的关键字
    find . -type f -name "*.txt" | xargs grep "keyword"
  4. 使用 grep 来查找多个文件中的匹配项:
    grep -R "pattern" *
  5. 使用 locate 和 xargs 来批量操作多个文件:
    locate "*.txt" | xargs chmod 755
  6. 使用 find 和 exec 来批量操作文件:
    find . -type f -name "*.txt" -exec echo {} \;
  7. 使用 grep 和 whereis 来快速查找程序源代码中的函数:
whereis grep | awk '{print $2}' | xargs grep -H 'function_name'

到这里本文章就结束了,希望大家不要只是看,需要自己动手尝试写一写

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

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

相关文章

Python武器库开发-flask篇之URL重定向(二十三)

flask篇之URL重定向(二十三) 通过url_for()函数构造动态的URL: 我们在flask之中不仅仅是可以匹配静态的URL,还可以通过url_for()这个函数构造动态的URL from flask import Flask from flask import url_forapp Flask(__name__)app.route(/) def inde…

《硅基物语.AI写作高手:从零开始用ChatGPT学会写作》《从零开始读懂相对论》

文章目录 《硅基物语.AI写作高手:从零开始用ChatGPT学会写作》内容简介核心精华使用ChatGPT可以高效搞定写作的好处如下 《从零开始读懂相对论》内容简介关键点书摘最后 《硅基物语.AI写作高手:从零开始用ChatGPT学会写作》 内容简介 本书从写作与ChatG…

最新AI创作系统ChatGPT系统运营源码/支持最新GPT-4-Turbo模型/支持DALL-E3文生图

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

tcp的1对多模型C++处理逻辑

连接多个设备进行TCP连接,可以采取以下策略: 创建一个设备连接管理器:使用一个类或结构体来管理每个设备的连接。这个管理器应该包含设备的IP地址和端口号,以及一个连接到该设备的TCP连接。使用并发连接:使用并发的方式同时连接到所有设备。可以使用多线程或异步编程技术来…

R语言爬虫程序自动爬取图片并下载

R语言本身并不适合用来爬取数据,它更适合进行统计分析和数据可视化。而Python的requests,BeautifulSoup,Scrapy等库则更适合用来爬取网页数据。如果你想要在R中获取网页内容,你可以使用rvest包。 以下是一个简单的使用rvest包爬取…

云积万相,焕发电商店铺新活力

数字化时代,电商店铺的运营和营销策略越来越受到重视。如何让店铺在众多的竞争中脱颖而出,吸引更多的顾客,提高销售额,是每个电商品牌都需要思考的问题。云积天赫最近推出的云积万相为电商店铺带来全新的活力和更多的可能性。   …

promise时效架构升级方案的实施及落地 | 京东物流技术团队

一、项目背景 为什么需要架构升级 promise时效包含两个子系统:内核时效计算系统(系统核心是时效计算)和组件化时效系统(系统核心是复杂业务处理以及多种时效业务聚合,承接结算下单黄金流程流量)&#xff…

applicationContext.getBean 为null

场景: 使用SpringUtils 添加了统一类的调用。单元测试是正常的。 SpringUtils public class SpringUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;Overridepublic void setApplicationContext(Nonnull Applica…

CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

【导师不教?我来教!】同济计算机博士半小时就教会了我五大深度神经网络,CNN/RNN/GAN/transformer/LSTM一次学会,简直不要太强!_哔哩哔哩_bilibili了解的五大神经网络,整理笔记如下: 视频是唐宇…

【第2章 Node.js基础】2.7 Node.js 的流(一) 可读流

🌈 Node.js 的流 🚀什么是流 流不是 Node.js 特有的概念。它们是几十年前在 Unix 操作系统中引入的。 我们可以把流看作这些数据的集合,就像液体一样,我们先把这些液体保存在一个容器里(流的内部缓冲区 BufferList&…

JS原生-弹框+阿里巴巴矢量图

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…

【题解】洛谷 P9658 Laser Trap

题解-P9658 Laser Trap 题目传送门 题意简述 题面是英文的&#xff0c;还没翻译&#xff0c;就讲一讲吧。 n n n 个激光发射器&#xff0c;两两之间产生激光束&#xff0c;将平面分为若干区域。 问至少删去多少个发射器&#xff0c;可以使得原点与外侧区域联通。 多组数据&a…

Java封装一个根据指定的字段来获取子集的工具类

工具类 ZhLambdaUtils SuppressWarnings("all") public class ZhLambdaUtils {/*** METHOD_NAME*/private static final String METHOD_NAME "writeReplace";/*** 获取到lambda参数的方法名称** param <T> parameter* param function functi…

excel导入 Easy Excel

依旧是框架感觉有东西&#xff0c;但是确实是模拟不出来&#xff0c;各种零零散散的件太多了 controller层 ApiOperation(value "导入Excel", notes "导入Excel", httpMethod "POST", response ExcelResponseDTO.class)ApiImplicitParams({…

Unity3d 导入中文字体转TMPtext asset

外部字体放入unity仓库以后呢&#xff0c;需要把这个字体转成用立体的字体文件才可以被使用&#xff01; 要想转换的话呢先放入仓库对字体点右键上面有一个Create创建里面有一个TEXT Asset&#xff0c;创建好就可以使用了

(论文阅读32/100)Flowing convnets for human pose estimation in videos

32.文献阅读笔记 简介 题目 Flowing convnets for human pose estimation in videos 作者 Tomas Pfister, James Charles, and Andrew Zisserman, ICCV, 2015. 原文链接 https://arxiv.org/pdf/1506.02897.pdf 关键词 Human Pose Estimation in Videos 研究问题 视频…

leetcode刷题日志-58最后一个单词的长度

给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a; 输入&#xff1a;s “Hello World” 输出&#xff1a;5 解释&a…

spring为什么要使用三级缓存来解决循环依赖

出现循环依赖的原因 AService依赖BService Service("aService") public class AService {AutowiredBService bService; } BService依赖AService Service("bService") public class BService {AutowiredAService aService; } 此时就出现了循环依赖 想…

应用软件安全编程--17预防基于 DOM 的 XSS

DOM型XSS从效果上来说也属于反射型XSS,由于形成的原因比较特殊所以进行单独划分。在网站页面中有许多页面的元素&#xff0c;当页面到达浏览器时浏览器会为页面创建一个顶级的Document object 文档对象&#xff0c;接着生成各个子文档对象&#xff0c;每个页面元素对应一个文档…