Linux 在ms dos或cygwin下搜索docx文件的命令行工具

Linux 在ms dos或cygwin下搜索docx文件的命令行工具,linux,search,command-line,docx,Linux,Search,Command Line,Docx,是否有命令行工具可以在ms dos或cygwin下搜索docx文件 我试过grep,它不适用于docx,而适用于txt文件 我知道我总是可以先将docx转换为txt,然后使用grep进行搜索,但我想知道 是否有可以直接在命令行下搜索的命令工具 谢谢zgrep可能适合你?它通常在OpenOffice文档中工作,两者都是包含XML的压缩档案: zgrep "some string" *.xdoc 我没有.xdoc文件来测试这一点,但理论上它应该可以工作…您可以使用zipgrep,它在zip存档的所

是否有命令行工具可以在ms dos或cygwin下搜索docx文件

我试过grep,它不适用于docx,而适用于txt文件

我知道我总是可以先将docx转换为txt,然后使用grep进行搜索,但我想知道

是否有可以直接在命令行下搜索的命令工具


谢谢

zgrep可能适合你?它通常在OpenOffice文档中工作,两者都是包含XML的压缩档案:

zgrep "some string" *.xdoc

我没有.xdoc文件来测试这一点,但理论上它应该可以工作…

您可以使用zipgrep,它在zip存档的所有文件(docx文件)上调用grep。
但是,您可能会对结果感到失望,因为它返回包含文本和XML标记的XML文件的原始内容

在试用了这些东西之后,我发现最简单的方法是使用linux实用程序将所有docx文件批量转换为txt文件,然后轻松地对这些txt文件执行grep操作。

我编写了一个小bash脚本,它将帮助您:

#!/bin/bash
export DOCKEY="$@"

function searchdoc(){
 VK1=$(cat "$@" | grep -i "$DOCKEY" | wc -c)
 VK2=$(unzip -c "$@" | grep -i "$DOCKEY" | wc -c)
 let NUM=$VK1+$VK2
 if [ "$NUM" -gt 0 ]; then
  echo $NUM occurences in $@
  echo opening file. 
  gnome-open "$@"
 fi
}

export -f searchdoc
echo searching for $DOCKEY ...
find . -exec bash -c 'searchdoc "{}" 2>/dev/null' \;
将其另存为docfind.sh,您可以调用

 $#> docfind.sh searchterm
从任何要扫描的文件夹

将其另存为docfind.sh,您可以调用

像我这样的新手可能需要被告知,为了使.sh脚本能够从任何目录执行,它需要具有和位于/usr/bin或您的目录中的其他位置


我可以在Linux Mint中设置nemo文件管理器,以便从任何文件夹的上下文菜单()打开终端。

如果无法关闭bcos offtopic,您能评论我应该将此问题放在哪里吗?抱歉,不是编程问题,请尝试。(我没有否决你的问题)。祝你好运。@谢谢,我将把问题发布给超级用户!感谢您的回复,但不幸的是,它不适用于docx,但我刚刚测试并确认zgrep也适用于txt。此外,我还尝试将docx保存为openOffice格式的odt,但仍然不起作用。对于可能希望搜索.doc文件(旧Word 97格式)而不是docx的任何其他人,我是否对“MSG”*.odt中的zgrep做了任何错误操作:
zgrep
使用现成的.doc,其中
docx2txt
不起作用。它还包含在Git for Windows安装(MinGW64)中,非常方便。很好的提示,谢谢!这管用!谢谢!由于某种原因,我不能直接从终点站出发。不得不改用这个:/bin/bash docfind.sh searchterm