Linux文件与内容查阅、归档压缩

2024-06-15 22:12

本文主要是介绍Linux文件与内容查阅、归档压缩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#Linux系统基础在这里插入图片描述

文件与内容查找、归档压缩

find命令搜索文件

grep对文件的内容进行搜索

tar命令进行文件的压缩与解压缩

一、文件的查找

格式实例:find . -name "123.txt"说明
find起始目录查找类型查找条件
./ 或 .-name“123.txt”在当前目录中查找哦名为123.txt的文件或文件夹
*代表任意字符串/opt/-name“pass*”在opt目录下查找以pass开头的文件和文件夹
[ ]或,里面的任何一个都要匹配./ 或 .-name“[h]*”在当前文件夹内查找以h开头的 文件、文件夹 | 可以不用
| 代表 或(加上大括号是代表单个字符的或).-name“[h|f]*”在当前文件夹内查找以h或f开头的
(字符串1 | 字符串2 )用圆括号是字符串的或
.-name“[a-z]*”在当前文件夹内查找以小写字母开头的
.-name“[A-Z]*”找大写字母开头的
.-name“[0-9]*”找数字开头的(0-9开头的)
^表示非.-name“[ ^ A-Z]*”注意^的两边没有空格,表示不是以A-Z开头的
?代表单个任意字符.-name“h?llo*”找第1个是h第2个是任意字符,后面是llo开头的
.-name‘\\’查找包含特殊字符 \ 的文件,注意用单引号,这里需要两个\,第一个是转义符,表示后面那个\是一个字符
find.-perm777查找权限为rwx rwx rwx的文件
find . -path "./test" -prune -o -name "hello"查找当前目录中,除了test目录的其他所有目录中,包含hello的文件夹或文件
.-usermary查找所有者为mary的文件或文件夹
.-groupdev查找属于dev组的文件或文件夹
.-mtime-3查找最近3天内更新过的文件或文件夹
.-mtime+3查找3天前更新过的问文件或文件夹
.-newer123.txt查找比123.txt新的文件夹
.! -newer123.txt查找比123.txt旧的文件
.-typed查找当前目录下的所有文件夹.
d:目录,I:软连接文件,f:普通文件(文本文件、可执行文件等),c:字符设备(终端、磁带机等),b:块设备(光盘、硬盘等)
.-size602c查找当前目录下文件大小为602字节的文件
c:byte,k,M,G
.-size+602c查找大于602字节的文件
.-name “hello*”-exec ls -l {} ;查找当前目录下所有以hello开头的文件,并将其细节显示出来,如果查找出了目录,那么注意会被ls -l显示出来
.-name “hello*”-exec rm {} ;查找当前目录下所有以hello开头的文件并将其删除
.-name “hello*”| xargs ls -l查找当前目录下所有以hello开头的文件并将其细节显示出来,| 称之为管道,前面的输出就是后面的输入

二、命令执行内容的查找过滤

功能项命令说明
grepgrep “root” /etc/passwd查找 /etc/passwd文件中包含root的行
grep -n “root” /etc/passwd查找 /etc/passwd文件中包含root的行,并输出行号
grep “^ma” /etc/passwd查找 /etc/passwd文件中 以 ma 为 首 的行
grep “ma$” /etc/passwd查找 /etc/passwd文件中 以 ma 为 尾 的行
grep “1” /etc/passwd查找 /etc/passwd文件中 以 r或d 为 首的行
grep -v “内容”排除包含“内容”的行
ls | grep test从ls的输出中过滤出包含test的文件名
grep -r games /etc在/etc 目录下(包括所有子目录)查找所有包含games的文件
统计ls /var/log | grep log | wc -l显示在/var/log 中,名字有log的文件数量有几个
wcwc-l-l:行数;-c比特数;-w字数;如果不指定参数则统计所有信息

xargs命令

find . -name “*” | xargs grep word 遍历某个目录下所有的文件中包含word的文件

  • xargs(英文全拼: extended arguments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

  • xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

  • xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

  • xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

  • xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

三、文件内容的查找

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行
  • od 以二进制的方式读取文件内容!

1.直接查阅文件内容

可以使用cat/tac/nl 这几个指令

1.cat(concatenate)
选项与参数:
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符范例一:检阅 /etc/issue 这个文件的内容
cat /etc/issue
范例二:承上题,如果还要加印行号
cat -n /etc/issue
范例三:将 /etc/man_db.conf 的内容完整的显示出来(包含特殊字符)
cat -A /etc/man_db.conf
2.tac (反向列示)

与cat命令完全相反,文件的内容会从最后一行开始反向输出到屏幕

3.nl (添加行号打印)
nl 【选项参数】/文件路径/文件名
选项与参数:
-b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n)-b t :如果有空行,空的那一行不要列出行号(默认值)-n :列出行号表示的方法,主要有三种:-n ln :行号在屏幕的最左方显示;-n rn :行号在自己字段的最右方显示,且不加 0 ;-n rz :行号在自己字段的最右方显示,且加 0 ;
-w :行号字段的占用的字符数。

2.可翻页显示内容

1. more (一页一页翻动)
[root@study ~]# more /etc/man_db.conf
#
#
# This file is used by the man-db package to configure the man and cat paths.
# It is also used to provide a manpath for those without one by examining
# their PATH environment variable. For details see the manpath(5) man page.
#
.....(中间省略).....
--More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的指令
  • 如果文件内容比较多,就会出现上述情况,在最后一行会显示当前文件内容的显示百分比 ,而且在最后一行可以输出命令,进行下一步操作
    • 空格键 (space):代表向下翻一页;
    • Enter :代表向下翻『一行』;
    • /字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;【在文件内部查看信息时,搜索关键字也是这样的】
    • :f :立刻显示出文件名以及目前显示的行数;
    • q:代表立刻离开 more ,不再显示该文件内容。
    • b 或 [ctrl]-b:代表往回翻页,不过这动作只对文件有用,管道无用。
    • q:离开
2.less (一页一页翻动)
[root@study ~]# less /etc/man_db.conf
#
#
# This file is used by the man-db package to configure the man and cat paths.
# It is also used to provide a manpath for those without one by examining
# their PATH environment variable. For details see the manpath(5) man page.
#
.....(中间省略).....
: <== 这里可以等待你输入指令!

less 的用法比起 more 又更加的有弹性,在 more 的时候,我们并没有办法向前面翻,只能往后面看,但若使用了 less 时,就可以使用 pageuppagedown 等按键的功能来往前往后翻看文件了,除此之外,在 less 里头可以拥有更多的搜索功能

  • 空格键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字符串 :向下搜寻『字符串』的功能;
  • ?字符串 :向上搜寻『字符串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • g :前进到这个资料的第一行去;
  • G :前进到这个数据的最后一行去 (注意大小写);
  • q :离开 less 这个程序;

⭐️⭐️ 可以发现,less 使用的画面与环境与 man page 非常的类似,因为 man 这个指令就是呼叫 less 来显示说明文件的内容的

3.局部截取内容

1.head (取出前面几行)
  • 输出指定前几行的内容
head -n [行数] 文件

-n 选项后面的参数较有趣,如果接的是负数,例如上面范例的-n -100 时,代表第100列前的所有行数, 但不包括后面 100 行

2.tail (取出后面几行)
  • 取出最后n行的内容
tail -n [行数] 文件   
范例一:如果不知道/etc/man_db.conf 有几行,却只想列出 100 行以后的数据时?
[root@study ~]# tail -n +100 /etc/man_db.conf
  • 动态探测文件内容
    • 如果某个文件是在动态变化的,比如日志文件,就可以使用该命令,动态监测日志的变化
tail -f 文件

4.阅读非纯文本档: od

由于执行档通常是 binary file ,使用上头提到的指令来读取他的内容时, 确实会产生类似乱码的数据

[root@study ~]# od [-t TYPE] 文件
选项或参数:
-t :后面可以接各种『类型 (TYPE)』的输出,例如:a :利用默认的字符来输出;c :使用 ASCII 字符来输出d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ;f[size] :利用浮点数(floating)来输出数据,每个数占用 size bytes ;o[size] :利用八进制(octal)来输出数据,每个整数占用 size bytes ;x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes ;范例一:请将/usr/bin/passwd 的内容使用 ASCII 方式来展现!
od -t c /usr/bin/passwd
范例二:请将/etc/issue 这个文件的内容以 8 进位列出储存值与 ASCII 的对照表
od -t oCc /etc/issue

四、修改文件时间或新建文件touch

文件的时间是很重要的,因为,如果文件的时间误判的话,可能会造成某些程序无法顺利的运作

在使用ls -l --time=[参数]命令时,可以显示文件的时间信息,有关时间参数,主要有三种:

  • modification time (mtime)
    当该文件的内容数据变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限

    在默认的情况下,ls 显示出来的是该文件的 mtime

  • status time (ctime)
    当该文件的==状态 (status)==改变时,就会更新这个时间,例如文件的权限与属性被更改时,都会更新这个时间,

    ⭐️值得注意的是:如果我们复制一个文件,即使是复制文件的所有属性,也没有办法使得ctime不变,应为ctime就是记录文件最新状态的时间属性

  • access time (atime)
    该文件的内容被取用时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取/etc/man_db.conf , 就会更新该文件的 atime 了。

使用touch命令可以修改文件的时间属性,如果命令的对象是一个不存在的文件,则会创建一个以该名字命名的空文件

touch [-acdmt] 文件
选项与参数:
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不建立新文件;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]范例:将 bashrc 日期改为 2014/06/15 2:02
touch -t 201406150202 bashrc
范例:修bashrc 文件,将日期调整为两天前
touch -d "2 days ago" bashrc

五、文件归档压缩

归档:将多个文件整理为一个文件≠压缩

tar:tape archive磁带档案卷

功能项命令说明
tar 归档tar -cvf hello.tar hello,txt
或者tar -cvf hello.tar /opt/heheda/*
将hello.txt归档为hello.tar文件
-c:创建一个新的文件
v:显示归档过程细节(可以不写,如不写就不会显示归档过程)
f:使用归档文件或 ARCHIVE 设备
tar -tf test.tar将归档文件test.tar 中的文件显示出来
tar -xvf tset.tar提取归档文件中的内容
gzip压缩gzip hello.tar将hello.tar文件进行压缩
gzip -d hello.tar.gz解压缩文件成tar.gz
归档压缩
加-z
tar -zcvf hello.tar.gz hello.txt将hello.txt归档压缩为hello.tar.zip
tar -zxvf hello.tar.gz解压缩hello.tar.gz文件
tar -zxvf 【压缩包文件名.tar.gz】 -C 【路径】解压到指定目录
zip/unzipzip hello.zip hello.txt压缩hello.txt
zip -r test.zip /opt/test递归压缩,将/opt/test目录压缩
unzip -v hello.zip查看压缩文件hello.zip中的文件信息
unzip hello.zip解压缩

  1. r|d ↩︎

这篇关于Linux文件与内容查阅、归档压缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064721

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni