快速上手Linux核心命令(三):文件和目录操作命令_]使用( )命令可以在根目录“ ”下创建目录“cs

66 阅读18分钟
└── test

6 directories


③ 加上【-L leave】 列出目录下第leave层结构



[root@xiezhr test]# tree -L 1 . ├── a.txt ├── b.txt ├── c.txt ├── dir ├── dir1 ├── dir2 ├── dir3 ├── tt.txt ├── xiezhr └── xiezhr.txt

5 directories, 5 files


④ 加上【-f】显示完整的路径名称 加上【-i】则不显示**树枝**部分



[root@xiezhr test]# tree -f . ├── ./a.txt ├── ./b.txt ├── ./c.txt ├── ./dir ├── ./dir1 ├── ./dir2 ├── ./dir3 ├── ./tt.txt ├── ./xiezhr │ └── ./xiezhr/test └── ./xiezhr.txt

6 directories, 5 files [root@xiezhr test]# tree -i . a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr test xiezhr.txt

6 directories, 5 files [root@xiezhr test]# tree -fi . ./a.txt ./b.txt ./c.txt ./dir ./dir1 ./dir2 ./dir3 ./tt.txt ./xiezhr ./xiezhr/test ./xiezhr.txt

6 directories, 5 files


⑤ 加上【-F】参数区分目录和文件



[root@xiezhr test]# tree -F . ├── a.txt ├── b.txt ├── c.txt ├── dir/ ├── dir1/ ├── dir2/ ├── dir3/ ├── tt.txt ├── xiezhr/ │ └── test/ └── xiezhr.txt

6 directories, 5 files


**尾部带/的为目录**


#### touch 创建空白文件或改变文件的时间戳属性


1、简介


touch 是触摸的意思,摸一下文件可以创建空白文件或改变文件时间属性  
 **touch 不能创建目录但是能改变目录的时间戳属性**


2、语法格式



touch [参数选项] [文件]


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -a | 只更改文件最后访问时间 |
| -m | 只更改文件最后修改时间 |
| -d string | 使用字符串string代表的时间模板设置指定文件的时间属性 |


4、实践操作


① 不带任何参数



[root@xiezhr test]# touch xiezhr.txt [root@xiezhr test]# ls a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt


②更改文件时间戳属性(文件的时间戳属性:访问时间、修改时间、状态改变时间)


* stat 查看文件时间戳属性
* -m 更改文件修改时间
* -a 更改文件的访问时间



[root@xiezhr test]# stat xiezhr.txt File: ‘xiezhr.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 2661 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-03-12 21:04:32.681919249 +0800 Modify: 2022-03-12 21:04:32.681919249 +0800 Change: 2022-03-12 21:04:32.681919249 +0800 Birth: - [root@xiezhr test]# touch -m xiezhr.txt [root@xiezhr test]# stat xiezhr.txt File: ‘xiezhr.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 2661 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-03-12 21:04:32.681919249 +0800 Modify: 2022-03-12 21:08:22.344330251 +0800 Change: 2022-03-12 21:08:22.344330251 +0800 Birth: - [root@xiezhr test]# touch -a xiezhr.txt [root@xiezhr test]# stat xiezhr.txt File: ‘xiezhr.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 2661 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-03-12 21:08:42.528893719 +0800 Modify: 2022-03-12 21:08:22.344330251 +0800 Change: 2022-03-12 21:08:42.528893719 +0800 Birth: -


#### cp 复制文件或目录


1、简介


cp 是**c**o**p**y 英文单词的缩写,功能是复制文件或目录


2、语法格式



cp [参数选项] [源文件] [目标文件]


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -p | 复制时保持源文件的权限、时间属性 |
| -d | 如果复制的文件时符号链接,那么仅赋值符号链接本身,而且保留符号链接所指向的目标文件或目录 |
| -r | 递归复制目录,即复制目录下所有层级的子目录及文件 |
| -a | 等同于-p、-d、-r三个命令总和 |
| -i | 覆盖已有文件提示用户确认 |


4、实践操作


① 将文件a.txt 复制为 aaa.txt



[root@xiezhr test]# cp a.txt aaa.txt [root@xiezhr test]# ls aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt


②复制目录,将dir 目录复制为dir\_bak



[root@xiezhr test]# ls aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt [root@xiezhr test]# cp -r dir dir_bak [root@xiezhr test]# ls aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt


#### mv 移动或重命名文件


1、简介


mv 是 **m**o**v**e 的缩写,功能是移动重命名文件


2、语法格式



mv [参数选项] [源文件] [目标文件]


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -f | 若目标文件已经存在,则不会询问直接覆盖 |
| -i | 若目标文件已存在,则会询问是否覆盖 |
| -n | 不覆盖已经存在的文件 |
| -u | 在源文件比目标文件新,或目标文件不存在时才进行移动 |


4、实践操作


① 给文件改名(如果a1.txt 不存在,则将aaa.txt 重命名为a1.txt)



[root@xiezhr test]# ls aaa.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv aaa.txt a1.txt [root@xiezhr test]# ls a1.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt


② 给文件重命名(如果a2.txt存在,则将a1.txt 覆盖为a2.txt)



[root@xiezhr test]# ls a1.txt a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv a1.txt a2.txt mv: overwrite ‘a2.txt’? y [root@xiezhr test]# ls a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt


③ 移动单个文件或多个文件



[root@xiezhr test]# ls a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv a2.txt dir/ [root@xiezhr test]# ls b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv b.txt c.txt dir/ [root@xiezhr test]# ls dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt


④移动目录 如果目录存在则将文件移动到目录中,如果不存在则将目录改名



[root@xiezhr test]# ls a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv a2.txt dir/ [root@xiezhr test]# ls b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv b.txt c.txt dir/ [root@xiezhr test]# ls dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv dir1 dir [root@xiezhr test]# ls dir dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv dir2 dir5 [root@xiezhr test]# ls dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt


#### rm 删除文件或目录


1、简介


rm 时**rm**ove 英文单词的缩写,功能时删除一个或多个文件、目录。rm是Linux中最危险的命令。如果删错了那只有跑路了~ 慎重慎重慎重😂


2、语法格式



rm [参数选项] [文件或目录]


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -f | 强制删除,忽率不存在的文件,不提示确认 |
| -r | 递归删除目录及其内容 |


4、实践操作


① 不带参数的删除,删除需要确认



[root@xiezhr test]# ls a.txt b.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# rm a.txt rm: remove regular empty file ‘a.txt’? y [root@xiezhr test]# ls b.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt


②强制删除文件,不需要确认



[root@xiezhr test]# ls b.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# rm -f b.txt [root@xiezhr test]# ls c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt


③ 递归删除目录文件



[root@xiezhr test]# tree dir1/ dir1/ └── a └── b └── t.txt

2 directories, 1 file [root@xiezhr test]# rm -rf dir1/ [root@xiezhr test]# ls c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt


注意:**数据无价,慎重、慎重、慎重**


* 尽量用mv代替rm ,先将文件移动到其他目录/tmp,类似于windows的垃圾回收站
* 删除前必须备份,即使只是删除一个很不起眼的文件
* 如果非要用到“rm -rf”,一定要确认好路径,别来个**rm -rf/** 那就真的玩完了,跑路都是小事,如果造成损失可能要负法律责任。


#### chown 改变文件或目录的用户用户组


1、简介


chown 是**ch**ange **own**er 英文的缩写,用于改变文件或目录的所属用户和用户组


2、语法格式



chown [参数选项] [用户:用户组] [文件或目录]

chown 用户 文件或目录 # 仅仅授权用户 chown :组 文件或目录 # 仅仅授权组 chown 用户:组 文件或目录 # 不仅授权用户,还授权组


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -R | 递归更改目录的用户和用户组 |


4、实践操作


① 更改文件的用户和组



[root@xiezhr test]# ll c.txt -rw-r--r-- 1 root root 0 Mar 14 22:37 c.txt [root@xiezhr test]# chown xiezhr:xiezhr c.txt [root@xiezhr test]# ll c.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


② 递归更改目录即目录下所有目录及文件的用户和用户组属性



[root@xiezhr test]# ll -d dir drwxr-xr-x 3 root root 4096 Mar 13 16:08 dir [root@xiezhr test]# chown -R xiezhr.xiezhr dir/ [root@xiezhr test]# ll -d dir drwxr-xr-x 3 xiezhr xiezhr 4096 Mar 13 16:08 dir


#### chmod 改变文件或目录的权限


1、简介


chmod 是**ch**ange **mod**e 英文单词的缩写,用户改变文件或目录的权限。该命令只有文件的属主和root用户可以使用


2、语法格式



chmod [参数选项] [模式选项] [文件或目录]


我们输入如下命令后,会显示文件或目录的详细信息。那么开头的一堆东西代表什么呢?



[root@xiezhr test]# ll total 20 -rw-r--r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt drwxr-xr-x 3 xiezhr xiezhr 4096 Mar 13 16:08 dir drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3


![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/cbae2c11825a440cbdb3b5ec39434624~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1770906821&x-signature=Bkc%2Fl7v4YDNYuW8itiODyLNL9zY%3D)


![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/0314fa8b17ad487bb672aec044b14b7d~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1770906821&x-signature=GdaYXfEu3xF4I4oZjK1kVL%2FCXUI%3D)


如上图所示,


* Linux权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
* 第一位代表文件类型,-表示普通文件 d 表示目录
* r是**r**ead的缩写,代表可读权限 对应**4**
* w是**w**rite的缩写,代表可写权限 对应**2**
* x是e**x**ecute的缩写,代表可执行权限 对应**1**
* -没有任何权限 对应**0**
* a 是**a**ll 的缩写,代表所有等于u、g、o的综合
* u 是**u**ser的缩写,代表文件拥有者
* g 是**g**roup的缩写,代表用户组
* o 是**o**ther的缩写,代表其他用户


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -R | 递归处理指定目录及其子目录下的所有文件 |


4、实践操作  
 ① 设置所有权限为空



[root@xiezhr test]# ll c.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod a= c.txt [root@xiezhr test]# ll c.txt ---------- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


② 设置文件拥有者具有文件可执行属性



[root@xiezhr test]# ll c.txt ---------- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod u+x c.txt [root@xiezhr test]# ll c.txt ---x------ 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


②设置文件组具有文件可写权限



[root@xiezhr test]# ll c.txt ---x------ 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod g+w c.txt [root@xiezhr test]# ll c.txt ---x-w---- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


③ 设置其他用户具有文件可读权限



[root@xiezhr test]# ll c.txt ---x-w---- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod o+r c.txt [root@xiezhr test]# ll c.txt ---x-w-r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


④ 多个权限一起



[root@xiezhr test]# ll c.txt ---x-w-r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod ugo+x c.txt [root@xiezhr test]# ll c.txt ---x-wxr-x 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


⑤ 撤销其他用户可执行权限



[root@xiezhr test]# ll c.txt ---x-wxr-x 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod o-x c.txt [root@xiezhr test]# ll c.txt ---x-wxr-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


⑥ 通过数字设置文件拥有者可读可写可执行、用户组可读可执行、其他用户可读可执行



[root@xiezhr test]# ll c.txt ---x-wxr-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod 755 c.txt [root@xiezhr test]# ll c.txt -rwxr-xr-x 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt


⑦使用【-R】参数递归授予dir目录下所有文件权限



[root@xiezhr test]# ll dir total 8 -rw-r--r-- 1 xiezhr xiezhr 90 Mar 13 15:24 a2.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 10 23:39 b.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 10 23:39 c.txt drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 10 23:38 dir1 [root@xiezhr test]# chmod -R 755 dir/ [root@xiezhr test]# ll dir total 8 -rwxr-xr-x 1 xiezhr xiezhr 90 Mar 13 15:24 a2.txt -rwxr-xr-x 1 xiezhr xiezhr 0 Mar 10 23:39 b.txt -rwxr-xr-x 1 xiezhr xiezhr 0 Mar 10 23:39 c.txt drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 10 23:38 dir1


#### chgrp 更改文件用户组


1、简介


chgrp 是**ch**ange **gr**ou**p** 的缩写,仅仅用于改变文件的用户组。chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。一般我们都使用chown 命令


2、语法格式



chgrp [参数选项] [用户组] [文件或目录]


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -R | 递归更改文件的用户组 |


4、实践操作


①修改文件组属性



[root@xiezhr test]# ll a.txt -rw-r--r-- 1 root root 0 Mar 15 21:35 a.txt [root@xiezhr test]# chgrp xiezhr a.txt [root@xiezhr test]# ll a.txt -rw-r--r-- 1 root xiezhr 0 Mar 15 21:35 a.txt


② 递归改变文件用户组属性



[root@xiezhr test]# ll dir3/ total 0 -rw-r--r-- 1 root root 0 Mar 15 21:37 a.txt -rw-r--r-- 1 root root 0 Mar 15 21:37 b.txt [root@xiezhr test]# chgrp -R xiezhr dir3/ [root@xiezhr test]# ll dir3/ total 0 -rw-r--r-- 1 root xiezhr 0 Mar 15 21:37 a.txt -rw-r--r-- 1 root xiezhr 0 Mar 15 21:37 b.txt


#### ln 硬链接与软连接


1、简介


ln 是**l**i**n**k英文单词缩写,功能是创建文件间的链接(链接分为软链接和硬链接)



> 
> 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
> 
> 
> 


那么什么是硬链接?什么又是软链接呢?


**【软链接】**


* 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
* 2.软链接可以 跨文件系统 ,硬链接不可以
* 3.软链接可以对一个不存在的文件名进行链接
* 4.软链接可以对目录进行链接


**【硬链接】**


* 1.硬链接,以文件副本的形式存在。但不占用实际空间。
* 2.不允许给目录创建硬链接
* 3.硬链接只有在同一个文件系统中才能创建


2、语法格式




3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| 无参数 | 创建硬链接 |
| -s | 创建硬链接 |


4、实践操作


①为a.txt 创建软连接linka。**如果a.txt丢失,linka失效**



[root@xiezhr dir]# ll total 4 -rw-r--r-- 1 root root 17 Mar 15 22:25 a.txt [root@xiezhr dir]# ln -s a.txt linka [root@xiezhr dir]# ll total 4 -rw-r--r-- 1 root root 17 Mar 15 22:25 a.txt lrwxrwxrwx 1 root root 5 Mar 15 22:28 linka -> a.txt


② 给文件a.txt创建硬链接,lna,a.txt与lna的各项属性相同



[root@xiezhr dir]# ll total 4 -rw-r--r-- 1 root root 17 Mar 15 22:25 a.txt lrwxrwxrwx 1 root root 5 Mar 15 22:28 linka -> a.txt [root@xiezhr dir]# ln a.txt lna [root@xiezhr dir]# ll total 8 -rw-r--r-- 2 root root 17 Mar 15 22:25 a.txt lrwxrwxrwx 1 root root 5 Mar 15 22:28 linka -> a.txt -rw-r--r-- 2 root root 17 Mar 15 22:25 lna


**总结:**


* 【删除软连接文件,对源文件及硬链接文件无影响】删除软连接linka,对a.txt和lna无影响
* 【删除硬链接文件,对源文件及软链接文件无影响】删除硬链接lna,对a.txt和linka无影响
* 【删除源文件,对硬链接文件无影响,但会导致软链接失效】 删除a.txt,对lna无影响,linka链接失效
* 【只有同事删除源文件、硬链接文件才会真正删除整个文件】删除lna、a.txt 整个文件才会被删除


#### redlink 查看符号连接文件的内容


1、简介


我们使用cat/more 查看软链接文件时,只能查看源文件内容,不能查看软链接的时哪个文件。这时候readlink就派上用场了


2、语法格式



readlink [参数选项] [文件]


3、参数说明


一般不加参数


4、实践操作


① 查看软链接linka



[root@xiezhr dir]# cat linka ffdfdfadf fdfdf

[root@xiezhr dir]# readlink linka a.txt


#### find 查找目录下的文件


1、简介


find 根据根据意思,你可能就知道其功能了。find用户查找目录下的文件,同时也可以调用其他命令执行相应操作


2、语法格式



find [路径] [操作语句] [执行的动作]


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| pathname | 命令所查找的路径,常用的.表示当前路径,/表示系统根目录 |
| -maxdepth levels | 查找的最大目录级数,leves 为自然数 |
| -name | 按照文件名查找文件,支持\*、?、[] 通配符 |
| -type | 查找某一类型的文件① b[块设备文件] ② c[字符设备文件] ③ d[目录]p[管道文件] ⑤ l[符号链接文件] ⑥ f[普通文件] ⑦s[stocket文件] |
| -exec | 对匹配的文件执行该参数所给出的shell命令 |
| ! | 取反 |
| -a | 取交集,and |
| -o | 取并集,or |


4、实践操作


① 【-name】根据文件名检索


* **区分大小写,需要忽略文件名中的大小写,可以使用 -iname参数**
* 可配合通配符"\*"、"?" 使用
* **"?" 可以表示任意一个单一的符号**
* **"\*" 可以表示任意数量(包括 0)的未知符号**



查找 /home/test 目录下所有文件名以 .txt 结尾的文件

[root@xiezhr test]# find /home/test/ -name '*.txt' /home/test/.d.txt /home/test/dir/a.txt /home/test/dir3/b.txt /home/test/dir3/a.txt /home/test/a.txt /home/test/tt.txt /home/test/c.txt /home/test/xiezhr.txt



查找 /home/test 目录下所有文件名刚好为 1 个字符的文件

[root@xiezhr test]# find /home/test/ -name '?.txt' /home/test/dir/a.txt /home/test/dir3/b.txt /home/test/dir3/a.txt /home/test/a.txt /home/test/c.txt


② 【-type】 根据文件类型检索



查找 /home/test 目录下所有java普通文件 下面命令中f 代表普通文件。上面参数中已说明

[root@xiezhr test]# find /home/test/ -type f -name '*.java' /home/test/user.java /home/test/money.java /home/test/test.java /home/test/xiezhr.java


③ 【-atime -mtime】查找指定时间内修改过的文件



查找当前目录,一天内访问过的文件 .表示当前路径,-1表示一天内

[root@xiezhr test]# find . -atime -1 ./user.java ./dir/linka ./dir/lna ./dir/a.txt ./money.java ./test.java ./xiezhr.java



在/home/test 目录下,查找2天内修改过的文件

[root@xiezhr test]# find /home/test/ -mtime -2 /home/test/ /home/test/user.java /home/test/dir /home/test/dir/linka /home/test/dir/lna


![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/78fce33a61a846d5824ac48c4c2005bd~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1770906821&x-signature=n%2FPEdoLBM2gwTZMNCQCJh8H1Oa0%3D)


参照上图所示


* -4 代表文件更改时间距离现在4天以内
* +4 代表文件更改时间距离现在4天以前
* 4 表示距离现在第四天


④ 【!】 进行反向查找



查找当前目录下所有目录

[root@xiezhr test]# find -type d . ./dir5 ./xiezhr ./xiezhr/test ./dir ./dir3 ./dir_bak

查找当前目录下非目录的文件

[root@xiezhr test]# find ! -type d ./user.java ./.d.txt ./dir/linka ./dir/lna ./dir/a.txt ./money.java ./dir3/b.txt ./dir3/a.txt ./test.java


⑤【-size】 根据文件大小查找


如下命令中


* “+” 表示大于
* “-” 表示小于
* “c” 表示字节
* “k” 表示kb
* “M” 表示Mb
* “G” 表示Gb



[root@xiezhr test]# find -size +200c . ./dir5 ./xiezhr ./xiezhr/test ./dir ./dir3 ./dir_bak


⑥ 【-perm】 根据文件权限查找



检索 /home/test 目录下权限为 rw-r--r-- 的文件

[root@xiezhr test]# find /home/test/ -perm u=rw-,g=r--,o=r-- /home/test/user.java /home/test/.d.txt /home/test/dir/lna /home/test/dir/a.txt /home/test/money.java


上面列子可以写成如下



[root@xiezhr test]# find /home/test/ -perm 644 /home/test/user.java /home/test/.d.txt /home/test/dir/lna /home/test/dir/a.txt /home/test/money.java


⑦ 查找当前目录下所有普通问及那,并用ls -l 命令将其列出来



[root@xiezhr test]# find -type f -exec ls {} ; ./user.java ./.d.txt ./dir/lna ./dir/a.txt ./money.java


上述列子中


* -exec 后面的时操作命令,可以是ls、rm、delete 等命令
* 命令最后以;结尾,考虑到到各个系统;可能有不同含义,所以在前面加上\进行转义
* {} 表示前面find 命令查到的结果,{} 前后必须要有空格


⑧ **在目录中查找n天以前的文件并删除它,实际工作中我们会经常用到。**


**我们在服务器上部署的应用程序一般都会输出日志文件,时间一长可能日志文件会成百上千,一下就把你的磁盘空间给撑满了。**


这时候下面命令就显得很重要了。  
 **一般情况下,这些命令我们我们会配置到Linux任务调度中自动执行**



[root@xiezhr test]# find . -type f -name "xiezhr*.log" -mtime +7 -exec rm -f {} ; [root@xiezhr test]#


或者



| 表示管道符号 xargs是一个向其他命令传递参数的过滤器。后面都会说到

下面命令表示 find 查找到的普通文件 传递给rm -f 执行

[root@xiezhr test]# find . -type f -name "xiezhr*.log" -mtime +7 |xargs rm -f [root@xiezhr test]#


或者



[root@xiezhr test]# find . -type f -name "xiezhr*.log" -mtime +7 -delete [root@xiezhr test]#


⑨ 将查找到的文件移动到另一个目录下



利用xargs -i 命令将find 查找当前目录下的所有java文件作为参数传递给mv命令

[root@xiezhr test]# find -type f -name "*.java" |xargs -i mv {} dir3/ [root@xiezhr test]# ls dir3 a.txt b.txt money.java test.java user.java xiezhr.java


⑩ **我们想将/home/test 目录下多个的高清电影发给好兄弟,这时就需要筛选出当前目录下所有电影并进行压缩**



[root@xiezhr test]# ls a.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt 化学资料.mp4 数学资料.mp4 物理.mp4 [root@xiezhr test]# find . -name "*.mp4" -exec tar -czvf movie.tar.gz {} ; ./数学资料.mp4 ./物理.mp4 ./化学资料.mp4 [root@xiezhr test]# ls a.txt c.txt dir dir3 dir5 dir_bak movie.tar.gz tt.txt xiezhr xiezhr.txt 化学资料.mp4 数学资料.mp4 物理.mp4


movie.tar.gz 就是最后压缩后的文件


#### xargs 将标准输入转换成命令行参数


1、简介


xargs 是 e**x**tended **arg**ument**s** 单词的缩写。它是命令传递参数的一个过滤器。xargs在上一个例子中已经用到过。它能够捕获一个命令的输出,然后传递给另外一个命令


2、语法格式



xargs [参数选项]


3、参数说明




| 参数 | 参数选项 |
| --- | --- |
| -n | 指定每行的最大参数量n,可以将输入的文本划分为多行,每行n个参数,默认空格分隔 |
| -d | 自定义分隔符 |


**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5396246fc86b4acaafad01b61a66bc81~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1770906821&x-signature=PkpflgA9Qcp%2BJge7SL26Z2%2B7iDc%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/7710c935fa124ee9aa561195aeac67fe~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1770906821&x-signature=Rejnr4vl%2F05NM2XgWil5aNKoZNo%3D)

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK