qidao123.com技术社区-IT企服评测·应用市场
标题:
linux 查找文件或查找内容 (find grep)
[打印本页]
作者:
罪恶克星
时间:
2024-6-11 12:21
标题:
linux 查找文件或查找内容 (find grep)
一 linux 查找包含指定内容的文件:
在linux 有时我们只我知道内容但不知道文件在哪,可以利用find 与grep查找
例1 要查找指定目录(默认包含子目录)文件内容包含 xxx 的文件
find /etc/ -type f -exec grep -l "mysql" {} +
复制代码
指令详细说明:
find .: 在当前目录及其子目录中查找文件。
-type f: 仅匹配文件,而不是目录。
-exec grep -l "mysql" {} +: 对于找到的每个文件,实行grep -l "mysql"命令。-l选项表现只输出包含匹配项的文件名,而不是表现匹配的详细内容。
-exec:这个选项告诉 find 命令,在找到的文件上实行指定的命令。
grep
:这是要实行的命令,即查找文件内容的命令。
{}:这是一个占位符,它表现 find 命令找到的每个文件名。当 -exec 选项与 {} 连合利用时,{} 将被更换为实际的文件名。
+:这个符号告诉 find 命令,在一次实行中处理尽可能多的文件。这意味着 find 将尽可能多地将文件名通报给命令。相比之下,-exec 选项的另一种用法是利用 ;(分号),它表现对于每个找到的文件都会实行一次命令,这可能会导致多次实行相同的命令,因此服从较低。
实行后找到全部包含mysql 内容的文件
从效果上看文件有点多,我们可以排除不找子目录只需加 -maxdepth 1 参数:
find /etc/ -type f -maxdepth 1 -exec grep -l "mysql" {} +
复制代码
查找排除查找子目录,如下图:
二 资料扩展:
1 find 命令详解
find 命令用于在目录布局中查找文件或目录。find 命令可以根据文件名、文件范例、文件权限、文件巨细、文件修改时间等条件举行查找。
find 命令的基本格式如下:
find [options] path [expression]
复制代码
options
指定 find 命令的选项,可以指定查找范围、查找条件等。
path
指定查找的路径。
expression
指定查找条件,可以根据文件名、文件范例、文件权限、文件巨细、文件修改时间等条件举行查找。
options
选项的详细说明如下:
-name
:根据文件名举行查找。
-type
:根据文件范例举行查找。
-perm
:根据文件权限举行查找。
-size
:根据文件巨细举行查找。
-mtime
:根据文件修改时间举行查找。
-ctime
:根据文件创建时间举行查找。
-uid
:根据文件全部者 ID 举行查找。
-gid
:根据文件组 ID 举行查找。
-user
:根据文件全部者举行查找。
-group
:根据文件组举行查找。
-newer
:查找比指定文件更新的文件。
-newermt
:查找比指定文件更新的文件,指定文件修改时间的绝对时间戳。
-newerc
:查找比指定文件更新的文件,指定文件创建时间的绝对时间戳。
-exec
:对查找到的文件实行指定的 shell 命令。
-ok
:与 -exec 相同,但在实行 shell 命令之前会询问用户是否确认。
-depth
:指定查找的深度。
-follow
:跟随符号链接。
-prune
:跳过指定目录。
-or
:指定多个查找条件,满意任一条件的文件都将被查找到。
-and
:指定多个查找条件,必须满意全部条件的文件才会被查找到。
expression
表达式的详细说明如下:
*****:匹配全部文件。
?
:匹配任意一个字符。
[seq]
:匹配指定范围内的字符。
!
:取反操作。
比方,以下命令将查找当前目录下全部以 .txt 结尾的文件:
find . -name "*.txt"
复制代码
以下命令将查找当前目录下全部属于用户 root 的文件:
find . -user root
复制代码
以下命令将查找当前目录下全部创建时间在 2 天前的文件:
find . -mtime -2
复制代码
以下命令将查找当前目录下全部巨细在 100 KB 到 1 MB 之间的文件:
find . -size +100k -size -1m
复制代码
以下命令将对查找到的文件实行 cat 命令,将文件内容输出到屏幕:
find . -name "*.txt"
-exec cat {} \;
复制代码
以下命令将对查找到的文件实行 rm 命令,将文件删除:
find . -name "*.txt"
-exec rm {} \;
复制代码
find 命令提供了非常强大的查找功能,可以根据各种条件举行查找。在实际利用中,可以根据需要灵活组合 find 命令的选项和表达式,实现各种复杂的查找需求。
2 grep命令详解
grep 命令用于在文件中查找指定的字符串或正则表达式。grep 命令的基本格式如下:
grep [options] pattern [files]
复制代码
options
指定 grep 命令的选项,可以指定查找范围、查找条件等。
pattern
指定查找的字符串或正则表达式。
files
指定要查找的文件。
options
选项的详细说明如下:
-n
:表现行号。
-c
:表现匹配行数。
-i
:忽略巨细写。
-f
:指定匹配模式的文件。
-v
:反向查找,只表现不匹配的行。
-r
:递归查找子目录中的文件。
-l
:只表现匹配的文件名。
pattern
表达式的详细说明如下:
*****:匹配全部字符。
?
:匹配任意一个字符。
[seq]
:匹配指定范围内的字符。
^
:匹配行的开始。
$
:匹配行的竣事。
|
:或操作。
&
:与操作。
比方,以下命令将查找当前目录下全部包含字符串 "hello" 的行:
grep "hello" .
复制代码
以下命令将查找当前目录下全部包含字符串 "hello" 的行,并表现行号:
grep -n "hello" .
复制代码
以下命令将查找当前目录下全部包含字符串 "hello" 的行,忽略巨细写:
grep -i "hello" .
复制代码
以下命令将查找当前目录下全部包含字符串 "hello" 的行,匹配模式来自文件 pattern.txt:
grep -f pattern.txt .
复制代码
以下命令将查找当前目录下全部以 .txt 结尾的文件,并表现包含字符串 "hello" 的行:
grep "hello" *.txt
复制代码
以下命令将查找当前目录下全部以 .txt 结尾的文件,并表现包含字符串 "hello" 的行,忽略巨细写:
grep -i "hello" *.txt
复制代码
grep 命令提供了非常强大的查找功能,可以根据各种条件举行查找。在实际利用中,可以根据需要灵活组合 grep 命令的选项和表达式,实现各种复杂的查找需求。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4