如何在 deepin文件夹中搜索包含特定内容、关键字的 Word 文档

embedded/2025/1/11 16:52:12/

deepin 系统中,搜索包含特定内容或关键字的 Word 文档是一项常见需求。以下是一个详细的步骤指南,帮助你在文件夹中高效地完成这项任务。

一、安装依赖工具

要搜索 Word 文档,首先需要安装一些必要的工具。这些工具包括 catdocdocx2txticonvgrep。它们分别用于处理不同格式的 Word 文档、字符编码转换和文本搜索。

在终端执行以下命令安装这些工具:

sudo apt install catdoc docx2txt libc-bin grep

如果系统中已安装这些工具,命令将提示无需重复安装。

二、编写搜索脚本

(一)只搜索 Word 文档(.doc/.docx)

以下是一个 Bash 脚本示例,用于搜索包含特定关键字的 Word 文档:

#!/bin/bash
# 安装依赖
hash catdoc docx2txt iconv grep || {echo "缺少依赖命令,正在尝试自动安装"sudo apt install catdoc docx2txt libc-bin grephash catdoc docx2txt iconv grep && {echoecho "依赖安装成功"echo} || {echoecho "依赖安装失败,脚本无法运行"echo "请点击终端上的[X]关闭该窗口"word">while true; word">do read; word">doneexit}
}# 读取参数
word">while true; word">doecho -n "请输入搜索文件夹:"read dir# 去除开头的file://dir="${dir/#file:\/\//}"# 未输入文件夹,搜索当前文件夹word">if [ "$dir" = "" ]; word">thendir="$(realpath "$PWD")"word">fiword">if [ -e "$dir" ]; word">thenbreakword">elseecho "搜索文件夹不存在"word">fi
word">doneword">while true; word">doecho -n "请输入搜索关键字:"read keywordword">if [ "$keyword" = "" ]; word">thenecho "搜索关键词不能为空"word">elsebreakword">fi
word">doneecho
echo "在 \"$dir\" 中寻找包含 \"$keyword\"word文件"
echofind "$dir" -type f | word">while read f; word">docontent=`cat "$f" | docx2txt 2>/dev/null | grep -ai "$keyword"catdoc "$f" 2>/dev/null | grep -ai "$keyword"`word">if [ "$content" != "" ]; word">thenfound="true"echo -------------------------------------------------------------echo "$f"echoecho "$content" | headechoword">fi
word">doneecho
echo "搜索完毕"
echo "可点击终端上的[X]关闭该窗口"# 防止终端自动关闭,用户可点击[X]关闭终端
word">while true; word">do read; word">done

(二)同时搜索 Word 文档(.doc/.docx)和纯文本(.txt)

如果你还需要同时搜索纯文本文件,可以使用以下脚本:

#!/bin/bash
# 安装依赖
hash catdoc docx2txt iconv grep || {echo "缺少依赖命令,正在尝试自动安装"sudo apt install catdoc docx2txt libc-bin grephash catdoc docx2txt iconv grep && {echoecho "依赖安装成功"echo} || {echoecho "依赖安装失败,脚本无法运行"echo "请点击终端上的[X]关闭该窗口"word">while true; word">do read; word">doneexit}
}# 读取参数
word">while true; word">doecho -n "请输入搜索文件夹:"read dir# 去除开头的file://dir="${dir/#file:\/\//}"# 未输入文件夹,搜索当前文件夹word">if [ "$dir" = "" ]; word">thendir="$(realpath "$PWD")"word">fiword">if [ -e "$dir" ]; word">thenbreakword">elseecho "搜索文件夹不存在"word">fi
word">doneword">while true; word">doecho -n "请输入搜索关键字:"read keywordword">if [ "$keyword" = "" ]; word">thenecho "搜索关键词不能为空"word">elsebreakword">fi
word">doneecho
echo "在 \"$dir\" 中寻找包含 \"$keyword\"word文件"
echofind "$dir" -type f | word">while read f; word">docontent=`cat "$f" | docx2txt 2>/dev/null | grep -Ii "$keyword"catdoc "$f" 2>/dev/null | grep -Ii "$keyword"cat "$f" | grep -Ii "$keyword"cat "$f" | iconv -f gb18030 -t utf-8 2>/dev/null | grep -Ii "$keyword"cat "$f" | iconv -f big5 -t utf-8 2>/dev/null | grep -Ii "$keyword"`word">if [ "$content" != "" ]; word">thenfound="true"echo -------------------------------------------------------------echo "$f"echoecho "$content" | headechoword">fi
word">doneecho
echo "搜索完毕"
echo "可点击终端上的[X]关闭该窗口"# 防止终端自动关闭,用户可点击[X]关闭终端
word">while true; word">do read; word">done

三、运行脚本

  1. 将上述脚本保存为一个文件,例如 search_word.sh
  2. 右击脚本文件,选择“属性”,在“权限管理”中勾选“允许以程序执行”.
  3. 双击脚本文件,选择“在终端运行”,或者在终端直接输入 ./search_word.sh 运行脚本.
  4. 按照脚本提示输入搜索文件夹和关键字,脚本将自动搜索并显示包含关键字的 Word 文档及其部分内容.

四、注意事项

  • 如果首次启动脚本时自动安装依赖失败,请手动使用 sudo apt install catdoc docx2txt 命令安装.
  • 脚本会显示搜索结果的文件路径和部分内容,方便你快速定位和查看.
  • 你可以根据需要修改脚本中的搜索参数和处理逻辑,以适应不同的搜索需求.

希望本文章可以在 Linux 文件夹中高效地搜索包含特定内容或关键字的 Word 文档,提高工作效率和文件管理能力.
支持ing


http://www.ppmy.cn/embedded/153066.html

相关文章

linux的shell中自定义的分隔符怎么用

在 Shell 脚本中,自定义分隔符可以通过多种方式使用,特别是在处理文件或字符串时。常见的场景包括读取以特定字符分隔的文件、设置 IFS(内部字段分隔符)来分割字符串等。以下是几种常见方法及其示例: ### 1. 使用 IFS…

HTML + CSS:如何强制div内容保持一行?

参考:https://cloud.tencent.com/developer/information/HTML%20%2B%20CSS%3A%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6div%E5%86%85%E5%AE%B9%E4%BF%9D%E6%8C%81%E4%B8%80%E8%A1%8C%EF%BC%9F 在HTML和CSS中,要强制让div内容保持在一行,可以使用以下方法&a…

sqlalchemy CreateIndex

一、CreateIndex 的工作原理: CreateIndex 本身只是 SQLAlchemy 中的一个构造函数,它只是创建了一个表示索引的对象,而不会直接在数据库中生成索引。要让索引在数据库中实际生成,需要将这个表示索引的对象通过 metadata.create_a…

框架部分面试题学习

IOC容器,AOP IOC :依赖反转,将对象的创建,组装,管理的控制权限从应用程序反转到IOC容器中。由springboot的来实现对象的自动装配和注入。 当某个类使用了Componnet 注解后,标记为一个组件。那么这个类在项…

flutter索引知识点

WidgetsFlutterBinding.ensureInitialized();初始化开启 initializeDateFormatting 本地化资源文件的加载 FileStorage 用于存储文件数据 getApplicationDocumentsDirectory() :获取应用文件目录(IOS和安卓通用),针对 Android 设备的 AppDate 目录&am…

如何提升scrapy的效率

如何提升scrapy的效率 在settings配置文件中修改CONCURRENT_REQUESTS 100 scrapy默认开启的线程数量为32个,这样设置可以使其线程数量为100个在运行scrapy时,会有大量的日志信息输出,为了减少cpu的使用率,可以设置log输出信息为WORNING或者…

Linux内核 -- RTC 驱动的注册方式

Linux 内核中 RTC 驱动的注册方式 在 Linux 内核中,RTC(Real-Time Clock)驱动的注册可以通过多种方式实现,以下整理了常见的注册方式及其注意事项。 1. 使用 devm_rtc_device_register 这是注册 RTC 驱动的最常用方法&#xff…

通过 crontab 每天定时启动一个 Java JAR 包并调用特定的 `main` 方法

要通过 crontab 每天定时启动一个 Java JAR 包并调用特定的 main 方法,你需要创建一个 cron 作业。这个作业将会在每天的指定时间运行。以下是步骤: 1. **确保环境变量配置正确**:首先,确保你的系统上已经安装了 Java&#xff0c…