在目标目录/和打印(Bash)中的所有文件上搜索input.file中的所有字符串
我需要搜索目标目录中的所有文件,并打印输入文件中找到的所有匹配字符串。似乎做不到。下面是一个示例场景和问题:在目标目录/和打印(Bash)中的所有文件上搜索input.file中的所有字符串,bash,recursion,input,grep,find,Bash,Recursion,Input,Grep,Find,我需要搜索目标目录中的所有文件,并打印输入文件中找到的所有匹配字符串。似乎做不到。下面是一个示例场景和问题: $ tree . . ├── input_file.txt └── target-dir ├── target-file-A.txt ├── target-file-B.txt ├── target-subdir-A │ ├── target-file-A.txt │ └── target-file-B.txt └── target
$ tree .
.
├── input_file.txt
└── target-dir
├── target-file-A.txt
├── target-file-B.txt
├── target-subdir-A
│ ├── target-file-A.txt
│ └── target-file-B.txt
└── target-subdir-B
├── target-file-A.txt
└── target-file-B.txt
$ cat input_file.txt
abc
cba
bca
acb
$ cat target-dir/target-file-A.txt
abc
cba
bca
acb
$ cat target-dir/target-file-B.txt
acb
cba
abc
bca
0101
1010
$ grep -f input_file.txt -r .
./input_file.txt:acb
./target-dir/target-file-A.txt:acb
./target-dir/target-file-B.txt:acb
./target-dir/target-subdir-A/target-file-A.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:acb
./target-dir/target-subdir-B/target-file-A.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:acb
我只看到一行匹配的打印(第一行),其余的被忽略。如何打印所有匹配的行?
我需要在成吨的网络日志中搜索对IOC的所有点击(IP/URL),这比预期的要困难。
编辑:我应该提到这是“Ubuntu 16.04.5 LTS\n\l”,在Windows 10下作为WSL您的grep命令工作:
grep -f input_file.txt -r .
应按预期工作,并匹配input_file.txt中的所有字符串,这些字符串由/
下所有文件中的新行分隔。在这种情况下,我怀疑在Windows下创建了具有Windows结束行的文件。您可以尝试以下操作,以确保具有正确的UNIX端点:
find ./ -type f -print0 | xargs -0 dos2unix
然后重试。您的grep命令:
grep -f input_file.txt -r .
应按预期工作,并匹配input_file.txt中的所有字符串,这些字符串由/
下所有文件中的新行分隔。在这种情况下,我怀疑在Windows下创建了具有Windows结束行的文件。您可以尝试以下操作,以确保具有正确的UNIX端点:
find ./ -type f -print0 | xargs -0 dos2unix
再试一次。请不要杀我。也许有人会觉得这篇文章很有用 解决方案是:行编码。 因为我是在Windows上运行的,所以当WSL是Unix时,我的Sublime文本被设置为“Windows行结束符”,因此不理解这些行结束符。在编辑器中切换选项后,一切正常:
$ cat -A input_file_changed.txt
abc$
cba$
bca$
acb
$ cat -A input_file.txt
abc^M$
cba^M$
bca^M$
acb
$ grep -f input_file_changed.txt -r .
./input_file.txt:abc
./input_file.txt:cba
./input_file.txt:bca
./input_file.txt:acb
./input_file_changed.txt:abc
./input_file_changed.txt:cba
./input_file_changed.txt:bca
./input_file_changed.txt:acb
./target-dir/target-file-A.txt:abc
./target-dir/target-file-A.txt:cba
./target-dir/target-file-A.txt:bca
./target-dir/target-file-A.txt:acb
./target-dir/target-file-B.txt:acb
./target-dir/target-file-B.txt:cba
./target-dir/target-file-B.txt:abc
./target-dir/target-file-B.txt:bca
./target-dir/target-subdir-A/target-file-A.txt:abc
./target-dir/target-subdir-A/target-file-A.txt:cba
./target-dir/target-subdir-A/target-file-A.txt:bca
./target-dir/target-subdir-A/target-file-A.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:cba
./target-dir/target-subdir-A/target-file-B.txt:abc
./target-dir/target-subdir-A/target-file-B.txt:bca
./target-dir/target-subdir-B/target-file-A.txt:abc
./target-dir/target-subdir-B/target-file-A.txt:cba
./target-dir/target-subdir-B/target-file-A.txt:bca
./target-dir/target-subdir-B/target-file-A.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:cba
./target-dir/target-subdir-B/target-file-B.txt:abc
./target-dir/target-subdir-B/target-file-B.txt:bca
请不要杀我。也许有人会觉得这篇文章很有用 解决方案是:行编码。 因为我是在Windows上运行的,所以当WSL是Unix时,我的Sublime文本被设置为“Windows行结束符”,因此不理解这些行结束符。在编辑器中切换选项后,一切正常:
$ cat -A input_file_changed.txt
abc$
cba$
bca$
acb
$ cat -A input_file.txt
abc^M$
cba^M$
bca^M$
acb
$ grep -f input_file_changed.txt -r .
./input_file.txt:abc
./input_file.txt:cba
./input_file.txt:bca
./input_file.txt:acb
./input_file_changed.txt:abc
./input_file_changed.txt:cba
./input_file_changed.txt:bca
./input_file_changed.txt:acb
./target-dir/target-file-A.txt:abc
./target-dir/target-file-A.txt:cba
./target-dir/target-file-A.txt:bca
./target-dir/target-file-A.txt:acb
./target-dir/target-file-B.txt:acb
./target-dir/target-file-B.txt:cba
./target-dir/target-file-B.txt:abc
./target-dir/target-file-B.txt:bca
./target-dir/target-subdir-A/target-file-A.txt:abc
./target-dir/target-subdir-A/target-file-A.txt:cba
./target-dir/target-subdir-A/target-file-A.txt:bca
./target-dir/target-subdir-A/target-file-A.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:cba
./target-dir/target-subdir-A/target-file-B.txt:abc
./target-dir/target-subdir-A/target-file-B.txt:bca
./target-dir/target-subdir-B/target-file-A.txt:abc
./target-dir/target-subdir-B/target-file-A.txt:cba
./target-dir/target-subdir-B/target-file-A.txt:bca
./target-dir/target-subdir-B/target-file-A.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:cba
./target-dir/target-subdir-B/target-file-B.txt:abc
./target-dir/target-subdir-B/target-file-B.txt:bca
谢谢,事实就是这样。我只是得出了同样的结论:)谢谢——事实就是这样。我只是得出了同样的结论:)