使用Bash干净地粘贴到文件中

时间:2018-07-09 23:54:22

标签: bash

我正在尝试将bash脚本的输出粘贴到文本文件中,但是我只想得到结果,而不是整个著作。这是我当前的代码:

#!/usr/bin/bash
result=$(grep -r -i --include=\*.exe ./ > output.txt)
result

但是我在文本文件中得到的是Binary file ... matches .. 而我所需要的只是扩展名为.exe的文件的名称,每个文件都在不同的行上。有办法吗?

2 个答案:

答案 0 :(得分:1)

编辑: :如果您只想在搜索特定格式时打印文件名,那么以下内容可能会对您有所帮助。

find -type f -iname "*.exe" -printf "%f\n"

根据OP,OP希望将此命令包含在变量中,并将文件名打印到新行中,以便随后使用。

var=$(find -type f -iname "*.exe" -printf "%f\n")
echo "$var"

请尝试使用find命令grep,以在特定类型的文件中查找特定字符串。

解决方案第一: 简单的find即可在.exe文件中查找特定的字符串。

find -type f -iname "*.exe" -exec grep -l "test_my_text" {} \+

第二解决方案: :对所有类型的文件使用find

find -type f -exec grep -l "test_my_text" {} \+

答案 1 :(得分:0)

grep不是您想要实现的正确命令。您需要咨询find命令以了解此类用例。像这样尝试:

find . -type f -name "*.exe"

在这里,-type f专门询问文件(-type d会分别为您提供目录)。您应该通过用$(...)包装它来获得所需的输出,以进行进一步的优化。