是否有Windows应用程序会在Word(DOCX)文档的字段中搜索文本字符串?像Agent Ransack及其兄弟FileLocator Pro这样的应用程序可以在Word文档中找到字符串,但似乎无法在字段中进行搜索。
例如,我希望能够在Word文档集合中找到所有出现的字符串“ getProposalTranslations”,这些文档的字段具有如下语法:
{ AUTOTEXTLIST \t "<wr:out select='$.shared_quote_info' datasource='getProposalTranslations'/>" }
请注意,字符串不会出现在文档本身的文本中,而只会出现在字段中。我相信,DOCX文件本质上只是一个zip文件,因此,如果有一个可以在归档文件中进行grep的工具,那可能会起作用。还要注意,我需要能够在许多目录中的数百个或数千个文件中进行搜索,因此,逐个解压缩文件是不可行的。我还没有自己找到任何东西,以为我会在这里问。预先感谢。
答案 0 :(得分:1)
此脚本应完成您要尝试执行的操作。让我知道是否不是这种情况。我通常不编写完整的脚本,因为它会损害学习过程,因此,我对每个命令都进行了注释,以便您可以从中学习。
#!/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...