Linux 文件查找与文件管理

随笔一篇,以便日后翻阅



前言

在Linux系统中,有成百上千个指令,不同的指令对应的指令文件,又放在不同的目录里。如果快速地查找指令的绝对路径是相当重要的


文件的搜索

基本搜索

which <指令> #显示一个指令的完整路径与别名。

pepino@Pepino:~$ which ls
/usr/bin/ls
pepino@Pepino:~$ which cat
/usr/bin/cat

whereis <指令> #搜索一个指令的完整路径以及其帮助文件。

pepino@Pepino:~$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
pepino@Pepino:~$ whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz

locate 搜索

在Linux系统中存在一个数据库,在这个数据库中保存了系统中所有文件的绝对路径,用户就可以使用下面的命令来查询文件的完整路径。

语法:locate [关键字]
将文件名或目录名中包含有此关键字的路径全部显示出来。

pepino@Pepino:~$ locate abcc
/etc/brltty/Contraction/nabcc.cti
/etc/brltty/Text/en-nabcc.ttb
/usr/share/liblouis/tables/en-nabcc.utb
/usr/share/liblouis/tables/text_nabcc.dis

注:第一次用locate需要安装两个包:
pepino@Pepino:~$ locate a
Command ‘locate’ not found, but can be installed with:
sudo apt install mlocate # version 0.26-5ubuntu1, or
sudo apt install plocate # version 1.1.8-1

pepino@Pepino:~$ sudo apt install mlocate
pepino@Pepino:~$ sudo apt install plocate

find 搜索

find是一个相当重要的查询文件绝对路径的指令

语法:find <路径> <选项> [表达式]

find查找文件的特点:

  • 从指定路径下递归向下搜索文件
  • 支持按照各种条件方式搜索
  • 支持对搜索得到的文件再进一步的使用指令操作(删除、统计大小、复制等)
参数注释
name根据文件名寻找文件
user根据文件拥有者寻找文件
group根据文件所属组寻找文件
size根据我呢见大小寻找文件
type根据文件型寻找文件,常见类型有:
-type f普通文件
-type c字符设备文件(键盘、鼠标、虚拟终端)
-type d块设备文件
-type l链接文件
-type d目录
o表达式 “或”
and表达式 “与”
not表达式 “非”

对查找到的文件进一步操作

find [路径] [参数] [表达式] -exec 指令 {} \;

参数注释
{ }代表find找到的文件
\转意符号
;表示本行指令结束
例:find /etc -size +500k -exec ls -l {} \;
# 查找 /etc 目录下大于 500k 的文件并显示文件大小

常用的文件操作指令

命令注释
head / tail文件的查看 头 / 尾
more / less文件的查看 详细 / 简略(分屏显示)
wc统计文件的行、词、字数
grep显示文件中匹配关键字的行
sort按序重排文本并送显示
uniq去除文件中相邻的重复的行
tr转换字符
cut显示文件中的某一列
paste将文本按列拼接

更多命令详细用法请自行了解:Linux命令大全


文件的备份、压缩与解压缩

语法:tar <选项> [文件/目录]
功能说明:用于建立、还原备份文件的工具,它也可以加入或解开备份文件内的文件,有时也称之为“打包”。

常用选项注释
c创建包
v将过程输出
x解包
t显示tar文件内容
r在tar文件尾部追加文件
z用gzip压缩或解压文件
j用bzip 压缩或解压文件
f指定文件备份名
-T从指定文件中读取欲打包的文件路径
-C将文件备份到指定的目录
pepino@Pepino:~$ tar cvf test.bak 1.txt 2.txt	#压缩且显示过程
1.txt
2.txt
pepino@Pepino:~$ tar xvf test.bak		#解压缩且显示过程
1.txt
2.txt
  • gzip,gunzip
    Linux标准压缩工具
    对文本文件可以达到75%的压缩率

    例:
    gzip man.config
    gunzip man.config.gz
    

对于用gzip压缩的文件,有一系列以z开头的指令,可以在不经解压的情况下,就直接显示文件的内容。

zcat:直接显示压缩文件的内容
zless:直接逐行显示压缩文件的内容

  • bzip2,bunzip2
    更新的Linux压缩工具
    比gzip有着更高的压缩率

    例:
    bzip2 httpd.conf.bk
    bunzip2 httpd.conf.bk.bz2
    

对于用bzip压缩的文件,也有一系列以bz开头的文件。

bzcat:直接显示压缩文件的内容
bzless:直接逐行显示压缩文件的内容


文件管理练习1

根据提供的思路自行练习,源代码见最后

1、查找“useradd”指令的绝对路径。
思路:whereis命令

2、搜索“/etc”目录下大于500Kb的文件,并显示出每个文件的大小。
思路:find参数size、exec的用法结合

3、使用一个普通用户在“/tmp”目录下创建10个文件(文件名不能相同),然后用一个相对简单的办法将这10个文件的权限改为“rwxrw-r-x”。
思路:touch批量创建文件,chmod更改文件权限

4、查询“/usr”目录中,文件名中包含有“host”的文件,并将这些文件路径保存到“/tmp/hostname”文件中。
思路:find命令name参数结合重定向输出


文件备份练习2

1、只显示boot分区的分区名与使用百分比。
思路:df 命令

2、统计整个“/etc”目录中有多少个连接文件。
思路:find命令type参数的使用以及wc统计命令

3、将/root目录备份到root.tar文件中。
思路:tar命令

4、将/boot目录压缩到boot.tar.gz文件中。
思路:tar命令z参数的使用

5、分别解开root.tar、boot.tar.gz到/tmp/rootbk/、/tmp/bootbk/目录中。
思路:tar命令解压缩参数的用法


1、查找“useradd”指令的绝对路径。
pepino@Pepino:~$ whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz

2、搜索“/etc”目录下大于500Kb的文件,并显示出每个文件的大小。
pepino@Pepino:~$ sudo find /etc -size +500k -exec ls -l {} \;
-rw-r--r-- 1 root root 577771 Nov 26 21:25 /etc/ssh/moduli
-rw-r--r-- 1 root root 640012 Oct  7  2021 /etc/brltty/Contraction/zh-tw.ct

3、使用一个普通用户在“/tmp”目录下创建10个文件(文件名不能相似),然后用一个相对简单的办法将这10个文件的权限改为“rwxrw-r-x”。
pepino@Pepino:~$ touch file{1..10}
pepino@Pepino:~$ chmod 765 file{1..10}
pepino@Pepino:~$ ls -l
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file1
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file10
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file2
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file3
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file4
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file5
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file6
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file7
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file8
-rwxrw-r-x 1 pepino pepino    0 Apr 21 21:26 file9

4、查询“/usr”目录中,文件名中包含有“host”的文件,并将这些文件路径保存到“/tmp/hostname”文件中。
pepino@Pepino:/usr$ sudo find -name "host" > /tmp/hostname1 


1、只显示boot分区的分区名与使用百分比。
pepino@Pepino:~$ df /boot
文件系统          1K-块     已用     可用 已用% 挂载点
/dev/sda3      40453376 10008480 28357780   27% /


2、统计整个“/etc”目录中有多少个链接文件。
pepino@Pepino:/etc$ sudo find -type l | wc -l
822

3、将/root目录备份到root.tar文件中。
pepino@Pepino:~$ sudo tar cvf root.tar /root

4、将/boot目录压缩到boot.tar.gz文件中。
pepino@Pepino:~$ sudo tar czf boot.tar.gz /boot

5、分别解开root.tar、boot.tar.gz到/tmp/rootbk/、/tmp/bootbk/目录中。
pepino@Pepino:~$ mkdir -p "/tmp/rootbk/" && tar xf root.tar -C /tmp/rootbk/
# 解压的前提是目录存在。不然会报错。这里是因为原先没有 /tmp/rootbk/ 目录,所以在解压过程中直接创建一个,或者可以先创建目录再解压到对应地方
pepino@Pepino:~$ mkdir -p "/tmp/bootbk/" && tar xzf boot.tar.gz -C /tmp/bootbk/ 	
# 注意解压参数 xzf 的用法
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PiB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值