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

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

一、安装依赖工具

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

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

bash 复制代码
sudo apt install catdoc docx2txt libc-bin grep

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

二、编写搜索脚本

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

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

bash 复制代码
#!/bin/bash
# 安装依赖
hash catdoc docx2txt iconv grep || {
    echo "缺少依赖命令,正在尝试自动安装"
    sudo apt install catdoc docx2txt libc-bin grep

    hash catdoc docx2txt iconv grep && {
        echo
        echo "依赖安装成功"
        echo
    } || {
        echo
        echo "依赖安装失败,脚本无法运行"
        echo "请点击终端上的[X]关闭该窗口"
        while true; do read; done
        exit
    }
}

# 读取参数
while true; do
    echo -n "请输入搜索文件夹:"
    read dir

    # 去除开头的file://
    dir="${dir/#file:\/\//}"

    # 未输入文件夹,搜索当前文件夹
    if [ "$dir" = "" ]; then
        dir="$(realpath "$PWD")"
    fi

    if [ -e "$dir" ]; then
        break
    else
        echo "搜索文件夹不存在"
    fi
done

while true; do
    echo -n "请输入搜索关键字:"
    read keyword

    if [ "$keyword" = "" ]; then
        echo "搜索关键词不能为空"
    else
        break
    fi
done

echo
echo "在 \"$dir\" 中寻找包含 \"$keyword\" 的word文件"
echo

find "$dir" -type f | while read f; do
    content=`
        cat "$f" | docx2txt 2>/dev/null | grep -ai "$keyword"
        catdoc "$f" 2>/dev/null | grep -ai "$keyword"
    `
    if [ "$content" != "" ]; then
        found="true"
        echo -------------------------------------------------------------
        echo "$f"
        echo
        echo "$content" | head
        echo
    fi
done

echo
echo "搜索完毕"
echo "可点击终端上的[X]关闭该窗口"

# 防止终端自动关闭,用户可点击[X]关闭终端
while true; do read; done

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

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

bash 复制代码
#!/bin/bash
# 安装依赖
hash catdoc docx2txt iconv grep || {
    echo "缺少依赖命令,正在尝试自动安装"
    sudo apt install catdoc docx2txt libc-bin grep

    hash catdoc docx2txt iconv grep && {
        echo
        echo "依赖安装成功"
        echo
    } || {
        echo
        echo "依赖安装失败,脚本无法运行"
        echo "请点击终端上的[X]关闭该窗口"
        while true; do read; done
        exit
    }
}

# 读取参数
while true; do
    echo -n "请输入搜索文件夹:"
    read dir

    # 去除开头的file://
    dir="${dir/#file:\/\//}"

    # 未输入文件夹,搜索当前文件夹
    if [ "$dir" = "" ]; then
        dir="$(realpath "$PWD")"
    fi

    if [ -e "$dir" ]; then
        break
    else
        echo "搜索文件夹不存在"
    fi
done

while true; do
    echo -n "请输入搜索关键字:"
    read keyword

    if [ "$keyword" = "" ]; then
        echo "搜索关键词不能为空"
    else
        break
    fi
done

echo
echo "在 \"$dir\" 中寻找包含 \"$keyword\" 的word文件"
echo

find "$dir" -type f | while read f; do
    content=`
        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"
    `
    if [ "$content" != "" ]; then
        found="true"
        echo -------------------------------------------------------------
        echo "$f"
        echo
        echo "$content" | head
        echo
    fi
done

echo
echo "搜索完毕"
echo "可点击终端上的[X]关闭该窗口"

# 防止终端自动关闭,用户可点击[X]关闭终端
while true; do read; done

三、运行脚本

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

四、注意事项

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

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

相关推荐
小码过河.7 分钟前
CentOS 搭建 Docker 私有镜像仓库
linux·docker·centos
liulilittle39 分钟前
C++/CLI与标准C++的语法差异(一)
开发语言·c++·.net·cli·clr·托管·原生
★YUI★43 分钟前
学习游戏制作记录(剑投掷技能)7.26
学习·游戏·unity·c#
daixin884843 分钟前
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
java·开发语言·redis·缓存
你我约定有三1 小时前
RabbitMQ--消息丢失问题及解决
java·开发语言·分布式·后端·rabbitmq·ruby
小乖兽技术1 小时前
C#与C++交互开发系列(二十四):WinForms 应用中嵌入C++ 原生窗体
c++·c#·交互
张北北.1 小时前
【深入底层】C++开发简历4+4技能描述6
java·开发语言·c++
贾斯汀玛尔斯2 小时前
ubuntu/centos系统ping 不通域名的解决方案
linux·ubuntu·centos
李永奉2 小时前
STM32-定时器的基本定时/计数功能实现配置教程(寄存器版)
c语言·开发语言·stm32·单片机·嵌入式硬件
go54631584652 小时前
中文语音识别与偏误检测系统开发
开发语言·人工智能·学习·生成对抗网络·数学建模·语音识别