ホームページ >システムチュートリアル >Linux >grep を使用して、指定したテキストを含むすべてのファイルを検索します
目的: この記事では、指定したディレクトリまたはファイル システム全体で、指定した単語や文字列を含むファイルを検索する方法について説明します。
難易度: 簡単
######約束:####### - 指定されたコマンドを実行するには、root 権限を使用する必要があります。root ユーザーを直接使用して実行することも、
-s オプションは、存在しないファイルまたは読み取れないファイルが見つかった場合にエラー メッセージを非表示にします。結果は、ファイル名に加えて、リクエスト文字列を含む行も出力されることがわかります。
指定された文字列を含むファイルを再帰的に検索します上記の場合、すべてのサブディレクトリは無視されます。いわゆる再帰的検索とは、すべてのサブディレクトリを同時に検索することを指します。
次のコマンドは、特定の単語を含むすべてのファイルを検索
上記の grep コマンドの場合、文字列
stretch の -w オプションを使用すると、特定の単語を含む行のみが表示されます:
リーリー
特定のテキストを含むファイル名の表示
上面的命令都会产生多余的输出。下一个案例则会递归地搜索 etc 目录中包含 stretch 的文件并只输出文件名: 默认情况下搜索是大小写敏感的,也就是说当搜索字符串 stretch 时只会包含大小写一致内容的文件。 通过使用 grep 的 -i 选项,grep 命令还会列出所有包含 Stretch , STRETCH , StReTcH 等内容的文件,也就是说进行的是大小写不敏感的搜索。 grep 命令也可以只在指定文件中进行搜索。比如,我们可以只在配置文件(扩展名为.conf)中搜索指定的文本/字符串。 下面这个例子就会在 /etc 目录中搜索带字符串 bash 且所有扩展名为 .conf 的文件: 类似的,也可以使用 --exclude 来排除特定的文件: 跟文件一样,grep 也能在搜索时排除指定目录。 使用 --exclude-dir 选项就行。 下面这个例子会搜索 /etc 目录中搜有包含字符串 stretch 的文件,但不包括 /etc/grub.d 目录下的文件: -n 选项还会显示指定字符串所在行的行号: 最后这个例子使用 -v 来列出所有不包含指定字符串的文件。 例如下面命令会搜索 /etc 目录中不包含 stretch 的所有文件:# grep -Rl stretch /etc/*
/etc/apt/sources.list
/etc/dictionaries-common/words
/etc/grub.d/00_header
/etc/os-release
# grep -Ril stretch /etc/*
/etc/apt/sources.list
/etc/dictionaries-common/default.hash
/etc/dictionaries-common/words
/etc/grub.d/00_header
/etc/os-release
# grep -Ril bash /etc/*.conf
OR
# grep -Ril --include=\*.conf bash /etc/*
/etc/adduser.conf
# grep -Ril --exclude=\*.conf bash /etc/*
/etc/alternatives/view
/etc/alternatives/vim
/etc/alternatives/vi
/etc/alternatives/vimdiff
/etc/alternatives/rvim
/etc/alternatives/ex
/etc/alternatives/rview
/etc/bash.bashrc
/etc/bash_completion.d/grub
/etc/cron.daily/apt-compat
/etc/cron.daily/exim4-base
/etc/dictionaries-common/default.hash
/etc/dictionaries-common/words
/etc/inputrc
/etc/passwd
/etc/passwd-
/etc/profile
/etc/shells
/etc/skel/.profile
/etc/skel/.bashrc
/etc/skel/.bash_logout
# grep --exclude-dir=/etc/grub.d -Rwl stretch /etc/*
/etc/apt/sources.list
/etc/dictionaries-common/words
/etc/os-release
# grep -Rni bash /etc/*.conf
/etc/adduser.conf:6:DSHELL=/bin/bash
# grep -Rlv stretch /etc/*
以上がgrep を使用して、指定したテキストを含むすべてのファイルを検索しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。