我有一个名为 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
最佳答案
使用read
从dictionary.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/