linux - 进行递归搜索并创建具有匹配模式的文件列表

标签 linux bash grep

我有一个名为 dictionary.txt 的字典文件。

它包含以下示例 IP 地址:

1.1.1.1
2.2.2.2
3.3.3.3

该目录下有很多IP_files.iplists,每个IP LIST包含很多不同的IP地址

我想搜索:1.1.1.1,如果在其中一个 IP 列表中找到该字符串,则将所有找到的 IP 列表文件名(例如 IP_files_list1.iplists)输出到以字典搜索词命名的另一个文件(例如 1.1.1.1.txt)

理想情况下,1.1.1.1.txt 包含在其中找到的所有文件名的列表,2.2.2.2.txt 将包含在其中找到的所有 IP LIST 文件名的列表。

grep -r "1.1.1.1" > 1.1.1.1

就我目前所知。这将创建一个名为 1.1.1.1 的文件,并列出在其中找到“1.1.1.1”的所有 IPLISTS.iplists 文件名。

所以 1.1.1.1 看起来像这样:

IP_files_list1.iplists
IP_files_list2.iplists
IP_files_list_another_list.iplists

最佳答案

使用readdictionary.txt读取:

#!/bin/bash
cd /path/to/iplists
while IFS= read -r ip; do
  # get the list of files that contain this ip and save it in a file
  grep -Frlw "$ip" * > "$ip".txt
done < /path/to/dictionary.txt
  • -F$ip 视为字符串,而不是模式
  • -r 选项,用于在/path/to/plists 下的所有文件中递归搜索
  • -l 仅获取包含匹配项的文件名,而不是匹配内容
  • -w 查找整个 ip(这样 1.1.1.1 就不会匹配 11.1.1.1

关于linux - 进行递归搜索并创建具有匹配模式的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42629824/

相关文章:

Bash 别名和点文件

linux - 仅在出现时剪掉多余的线条。 Linux

bash - sed 分行(高级)

linux - 使用通配符和 grep

python - 使用 systemd 按特定顺序执行多个 Python 脚本

linux - 替换模板文件中的 bash 变量

linux - 字典中的单词列表生成器

python - Bash if else 然后与 bash 版本的 sys.exit() 在一行中

linux - 如何grep一行ps afux通过PID过滤

unix - Grep文件包含两次或更多次出现的特定字符串