我正在尝试将bash脚本的输出粘贴到文本文件中,但是我只想得到结果,而不是整个著作。这是我当前的代码:
#!/usr/bin/bash
result=$(grep -r -i --include=\*.exe ./ > output.txt)
result
但是我在文本文件中得到的是Binary file ... matches ..
而我所需要的只是扩展名为.exe的文件的名称,每个文件都在不同的行上。有办法吗?
答案 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
会分别为您提供目录)。您应该通过用$(...)
包装它来获得所需的输出,以进行进一步的优化。