Search 如何在Word字段中搜索多个DOCX文件中的字符串?

Search 如何在Word字段中搜索多个DOCX文件中的字符串?,search,ms-word,grep,field,docx,Search,Ms Word,Grep,Field,Docx,是否有任何Windows应用程序可以在Word(DOCX)文档的字段中搜索文本字符串?代理Ransack及其big brother FileLocator Pro等应用程序可以在Word文档中找到字符串,但似乎无法在字段中搜索 例如,我希望能够在Word文档集合中找到字符串“getProposalTranslations”的所有匹配项,这些文档具有以下语法字段: { AUTOTEXTLIST \t "<wr:out select='$.shared_quote_info' datasou

是否有任何Windows应用程序可以在Word(DOCX)文档的字段中搜索文本字符串?代理Ransack及其big brother FileLocator Pro等应用程序可以在Word文档中找到字符串,但似乎无法在字段中搜索

例如,我希望能够在Word文档集合中找到字符串“getProposalTranslations”的所有匹配项,这些文档具有以下语法字段:

{ AUTOTEXTLIST  \t "<wr:out select='$.shared_quote_info' datasource='getProposalTranslations'/>" }
{AUTOTEXTLIST\t”“}

请注意,字符串不会出现在文档本身的文本中,而是只出现在字段中。从本质上讲,DOCX文件只是一个zip文件,我相信,如果有一个工具可以在归档文件中grep,那么它可能会工作。还请注意,我需要能够搜索多个目录中的数百个或数千个文件,因此逐个解压缩文件是不可行的。我自己还没有找到任何东西,我想在这里问问。提前感谢。

此脚本应能完成您的任务。如果不是这样,请告诉我。我通常不会编写整个脚本,因为它会影响学习过程,所以我对每个命令都进行了注释,以便您可以从中学习

#!/bin/sh

# Create ~/tmp/WORDXML folder if it doesn't exist already
mkdir -p ~/tmp/WORDXML

# Change directory to ~/tmp/WORDXML
cd ~/tmp/WORDXML

# Iterate through each file passed to this script
for FILE in $@; do
{
    # unzip it into ~/tmp/WORDXML
    # 2>&1 > /dev/null discards all output to the terminal
    unzip $FILE 2>&1 > /dev/null

    # find all of the xml files
    find -type f -name '*.xml' | \

    # open them in xmllint to make them pretty. Discard errors.
    xargs xmllint --recover --format 2> /dev/null | \

    # search for and report if found
    grep 'getProposalTranslations' && echo " [^ found in file '$FILE']"

    # remove the temporary contents
    rm -rf ~/tmp/WORDXML/*

}; done

# remove the temporary folder
rm -rf ~/tmp/WORDXML

将脚本保存到您喜欢的任何位置。随便你怎么说都行。我将把它命名为
docxfind
。通过运行
chmod+x docxfind
使其可执行。然后您可以像这样运行脚本(假设您的终端在同一目录下运行):
/docxfind filenames…

尝试以下方法开始:
解压-p[filename]| egrep'search | terms | here'
谢谢,达斯汀。我更新了我的问题,以更好地强调我需要跨许多文件/目录执行此操作,而解压缩所有文件/目录是不可行的。不过,还是要感谢你的建议!我不认为你可以搜索这些文件的内容而不解压缩它们。脚本可以快速完成此任务,并在临时文件使用完毕后将其删除。我会给你一个可能的解决方案。这很酷,达斯汀!我现在被困在Windows中,但我会在一个“真正”的操作系统中尝试一下,等我有时间可以在上面复制一些目录。我清楚地看到了它应该做什么,并将基于此将其标记为可接受的答案。非常好,谢谢!