查找命令之find 与 grep

痞子三分冷 提交于 2020-01-31 17:40:58

一、Find(查找文件或目录)

1.在/var/lib目录下查找所有文件其所有者是root用户的文件。

find /var/lib  -user root

2.查找家目录其所有者不是linux用户,并用长格式显示(如ls –l 的显示结果)。

把前面的结果当成是后面的命令中的{}的输入,然后执行并输出到屏幕
sudo find ~ ! -user linux -exec ls -l {} \;

2.1、查找文件然后复制到/tmp目录下

find /var/lib  -user root -exec cp -r {} /tmp \;

3.查找某一目录下名字是*.txt的文件

find /home -name "*.txt" -type f 

3.1、查找某一目录下名字是*.txt的目录

find /home -name "*.txt" -type d

4.当前目录查找30天以前的文件

find . -name "*.txt" -type f mtime +30

4.14.当前目录查找1天以内的文件

find . -name "*.txt" -type f mtime -1

5.查找大于5M的文件

M是大写,k是小写,才能识别
find . -name "*.txt" -type f mtime -1 -size 5M

6.查找权限是644的文件

文件默认权限666,目录777,默认权限掩码022
最终一个文件权限是644,目录权限的755

find . -name "*.txt" -type f mtime -1 -perm 644

6.1、把某些文件的权限都改成644

find . -type f -exec chmod -R 644 {} \;

二、grep(查找文件里的内容)

1.查找/etc/passwd下的root用户的信息

显示行号,颜色显示
grep -n --color "root" /etc/passwd

1.1、内容以root开头 “^root”,内容以root结尾"root$"

2.查找文件里过滤掉#的内容

#代表注释内容,看起来很繁琐

grep -v "#" /etc/resolv.conf

2.1过滤掉空格

grep -v "#" /etc/resolv.conf | grep -v "^$"

3.grep与正则表达式结合

三、正则表达式与通配符

正则表达式是用来匹配在文件中符合条件的字符串,正则是包含匹配。
grep,awk,sed命令都可以支持正则表达式。

通配符是用来匹配符合条件的文件名,通配符是完全匹配。
find,ls,cp这些命令不支持正则表达式,所以选择shell自己的通配符来匹配。
例如 *,?,[],

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!