Grep -f 似乎返回目录中的每个文件

Grep -f 似乎返回目录中的每个文件

我使用 grep -f 在目录中搜索与我提供的文件中的字符串匹配的文件。下面是我使用的命令

$find $(pwd) -type f |grep -f list.txt >result.txt

我正在使用 $pwd 并 find 在将文件写入 result.txt 时显示文件的完整路径

当我运行此命令时,我似乎返回了工作目录及以下的每个文件。

List.txt 包含(这是“输入”):

AAA_ERROR_2023_02_21.zip
ABA_ERROR_2023_02_23.zip
ACA_ERROR_2023_02_21.zip
AAA_LOG_2023_02_21.zip

输入来自我复制并粘贴的 Excel 列表(我使用简单的 grep 搜索文件名确认文件存在)。输入是 list.txt 中的内容

输出:

//returns almost everything in the sub directories

预期输出:

sampledirectory/parent/02/21/testfile_example_AAA_ERROR_2023_02_21.zip
sampledirectory/parent/02/23/testfile_example_ABA_ERROR_2023_02_23.zip
sampledirectory/parent/02/21/testfile_example_ACA_ERROR_2023_02_21.zip
sampledirectory/parent/02/21/testfile_example_AAA_LOG_2023_02_21.zip

我已经尝试过 |fgrep -wf list.txt 以及带有 -o 的其他变体,

文件中的“_”是否可能弄乱了模式?或者我的搜索列表是否可能不够具体?如能提供任何帮助,我们将不胜感激

答案1

此处的问题是由 Microsoft 添加的零长度字符串引起的。制作 grep 将使用的文本文件时要小心。

根据 harrymc 的说法“以回车符+换行符终止的行可能会产生空行(零长度字符串),而 grep 在每个文件中找到这些空行...”

相关内容