shell实现大批量word转码然后分析相关字段
需求
需要从服务器中的所有附件(2013-2019) 共60G查找相关字段
在linux上面直接打开doc等是乱码的
思路
先全部附件转码为txt, 然后用grep遍历查找字段实现
转码shell
#!/bin/bash
#*************************************************************************
# > File Name: doc.sh
# > Author: chenglee
# > Main : chengkenlee@sina.com
# > Blog : http://www.cnblogs.com/chenglee/
# > Created Time : 2019年04月10日 星期三 15时16分41秒
#*************************************************************************
Year="2018"
format="txt"
savedir=$(cd `dirname $0`; pwd)
filetxt="filetxt" ls -l ${Year}/ |awk '/^d/ {print $NF}' > ${Year}.logs function Find(){
for element in `ls $1`
do
dir_or_file=$1"/"$element
if [ -d $dir_or_file ]
then
Find $dir_or_file
else
echo $dir_or_file
fi
done
}
function Filter(){
cat filelogs | grep doc | grep -v 'pdf\|zip\|rar\|pptv' > filedir
}
function Unoconv(){
exec 2<"filedir"
while read line2<&2
do
unoconv -f ${format} ${line2}
echo "[${line2}] 已转码..."
#mv *.txt ${filetxt}/${Year}
done
}
function Move(){
exec 4<"${Year}.logs"
while read line4<&4
do
mv ${Year}/${line4}/*.txt ${savedir}/${filetxt}/${Year}/
done
}
function Filetxt(){
if [ -d "${filetxt}/${Year}" ];then
root_dir="${Year}"
Find $root_dir > filelogs
Filter
sum=`cat filedir | wc -l`
echo "总数为:${sum}"
Unoconv
else
mkdir -p ${filetxt}/${Year}
root_dir="${Year}"
Find $root_dir > filelogs
Filter
sum=`cat filedir | wc -l`
echo "总数为:${sum}"
Unoconv
fi
}
function main(){
Filetxt
echo "全部文件已实现转码为txt类型"
Move
echo "已转码的文件已转移到${savedir}/${filetxt}/${Year}/下"
}
main
注:先遍历附件中列出日期扔进filelogs这个文件和新建相对文件夹, 然后把所有能转码的doc和docx文件全部扔进filedir文件, 然后脚本直接识别这个文件中的目录文件, 转码方式是libreoffice+unoconv, 全部转码完成会自动把已转好的txt文件转移到filetxt这个文件夹中.

注:我这是双开
工具
yum install libreoffice unoconv -y
注:也可以自己下载包安装, 我偷个懒是直接yum拉取的
检索shell
#!/bin/bash
#*************************************************************************
# > File Name: crawler.sh
# > Author: chenglee
# > Main : chengkenlee@sina.com
# > Blog : http://www.cnblogs.com/chenglee/
# > Created Time : 2019年04月10日 星期三 10时52分31秒
#************************************************************************* filetxt="TXT" function If(){
exec 6<"NameFile"
while read line6<&6
do
grep -rn "${line6}" ${filetxt}/ > logs/result-${line6}.logs
echo "检索${line6}完毕..."
done
}
function main(){
If
}
main
注:全部转好之后,新建一个文件, 名称为NameFile, 里面换行写入需要查找的字段, 然后脚本会自动去读每行字符作为变量, 然后把所有结果扔进logs这个文件夹.
维护shell
#*************************************************************************
# > File Name: unockill.sh
# > Author: chenglee
# > Main : chengkenlee@sina.com
# > Blog : http://www.cnblogs.com/chenglee/
# > Created Time : 2019年04月10日 星期三 22时20分45秒
#*************************************************************************
#!/bin/bash function killAll(){
echo "等待10秒开始判断"
sleep 10;
StringName=`ps aux | grep unoconv | grep -v grep | awk -F '/' '{print$NF}' | awk -F '.' '{print$1}'`
if [ "$stringname" != "$StringName" ];then
echo "[转码正常]"
else
echo "[卡住了]... 准备干掉当前进程"
ps aux | grep unoconv | grep -v grep | awk -F ' ' '{print$2}' | xargs kill -9
fi
}
function main(){
while [ "1" = "1" ]
do
stringname=`ps aux | grep unoconv | grep -v grep | awk -F '/' '{print$NF}' | awk -F '.' '{print$1}'`
killAll
done
}
main
注:这个是配合转码shell一起使用的, 每10秒检测一下进程(时间可以根据自己调, 一个一般5秒之内能转好), 如果卡住了, 干掉当前的进行下一个.
shell实现大批量word转码然后分析相关字段的更多相关文章
- Shell主要逻辑源码级分析 (2)——SHELL作业控制
版权声明:本文由李航原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/110 来源:腾云阁 https://www.qclou ...
- TaskTracker任务初始化及启动task源码级分析
在监听器初始化Job.JobTracker相应TaskTracker心跳.调度器分配task源码级分析中我们分析的Tasktracker发送心跳的机制,这一节我们分析TaskTracker接受JobT ...
- MTK Android 源码目录分析
Android 源码目录分析 Android 4.0 |-- abi (application binary interface:应用二进制接口)|-- art (average retrieval ...
- MapReduce的ReduceTask任务的运行源码级分析
MapReduce的MapTask任务的运行源码级分析 这篇文章好不容易恢复了...谢天谢地...这篇文章讲了MapTask的执行流程.咱们这一节讲解ReduceTask的执行流程.ReduceTas ...
- Activity源码简要分析总结
Activity源码简要分析总结 摘自参考书籍,只列一下结论: 1. Activity的顶层View是DecorView,而我们在onCreate()方法中通过setContentView()设置的V ...
- MapReduce的MapTask任务的运行源码级分析
TaskTracker任务初始化及启动task源码级分析 这篇文章中分析了任务的启动,每个task都会使用一个进程占用一个JVM来执行,org.apache.hadoop.mapred.Child方法 ...
- 监听器初始化Job、JobTracker相应TaskTracker心跳、调度器分配task源码级分析
JobTracker和TaskTracker分别启动之后(JobTracker启动流程源码级分析,TaskTracker启动过程源码级分析),taskTracker会通过心跳与JobTracker通信 ...
- TableInputFormat分片及分片数据读取源码级分析
我们在MapReduce中TextInputFormat分片和读取分片数据源码级分析 这篇中以TextInputFormat为例讲解了InputFormat的分片过程以及RecordReader读取分 ...
- MapReduce中TextInputFormat分片和读取分片数据源码级分析
InputFormat主要用于描述输入数据的格式(我们只分析新API,即org.apache.hadoop.mapreduce.lib.input.InputFormat),提供以下两个功能: (1) ...
随机推荐
- 我了解到的新知识之----如何使用Python获取最新外汇汇率信息
这个需求本来是来源于公司同事工作中需求,用户需要使用数据分析工具Power BI抓取多页的中国银行官网上当天的外汇数据.但是没能研究出来. 我就开始在网络上找关于使用python来抓取当天汇率的案例分 ...
- mysql中各种日期数据类型及其所占用的空间
DATETIME,8字节: DATE,3字节: TIMESTAMP,4字节: YEAR,1字节: TIME,3字节:
- mac下git安装与使用
1.下载git客户端,下载地址为:https://git-scm.com/download/mac 2.打开安装包,可以看到此时的界面为: 我们需要把.pkg的安装包安装到系统当中.我双击了安装包 ...
- 2018-2019-2 网络对抗技术 20165225 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165225 Exp4 恶意代码分析 实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp ...
- Docker File知识
- 报错处理——# Creating Server TCP listening socket *:6379: bind: Address already in use
在启动redis时报错 # Creating Server TCP listening socket *:6379: bind: Address already in use 错误原因 6379地址已 ...
- SQL对照LinQ的基本语句
查询全表: string sql = "SELECT * FROM UserInfo"; var lamAll = db.UserInfo; var LinAll = from u ...
- 【HBase】-NO.140.HBase.1 -【HBase】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- DetNet: A Backbone network for Object Detection 笔记
1 前言 主要贡献: (1)第一个分析微调传统ImageNet预训练模型应用于目标检测器的固有缺点 (2)提出一个名为DetNet的新的骨干结构,它通过保持空间分辨率和扩大感受野的方式来专门设计用于目 ...
- 2018-2019-2 网络对抗技术 20165321 Exp6 信息搜集与漏洞扫描
1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 百度查找IP地址: 查了一下kali的IP地址 https://fofa.so/的使用: 查询了一 ...