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) ...
随机推荐
- 输入URL地址到页面加载完成 过程
在浏览器的地址栏中输入URL地址"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去访问服务器上的1.jsp这个web资源的过程 1.浏览器根 ...
- 获取本机IP地址的方法
public class Test { public static void main(String[] strings) { try { InetAddress candidateAddress = ...
- XXL-JOB之本地环境搭建
一.源码下载 1.官网地址 登录以下地址查看详细搭建步骤: https://www.cnblogs.com/xuxueli/p/5021979.html 2.下载源码 根据1中打开的页面,下载源码,如 ...
- 数据结构 - 表插入排序 具体解释 及 代码(C++)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/24323125 表插入排序 具体解释 及 代码 ...
- ffmpeg 多个音频合并 截取 拆分
1 多个mp3文件合并成一个mp3文件 一种方法是连接到一起 ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy outpu ...
- c++中的auto、const auto&
先介绍一下auto.const: 在块作用域.命名作用域.循环初始化语句等等 中声明变量时,关键词auto用作类型指定符. const:修饰符 接下来我们细细分析一下: (1)auto auto即 ...
- linux怎么查看进程启动,用户的工作目录,pwdx,/proc/11256/cwd
linux 通过pid 寻找程序路径的最简单命令(pwdx) #pwdx pid号1 [pid2] .... 在linux实际操作命令中,查看pid的方式有很多种,通过pid找程序路径的方式也有 ...
- python 开发环境部署
pip 通过google搜索到,2019.4月的版本是19. 需要更换源,否则会挺慢. Windows下更换pip源为清华源 打开appdata文件夹,在资源管理器的地址栏输入%appdata%后回车 ...
- oo第二次博客总结
不知道怎么说好呢,自己对自己也很没有信心的,希望自己能做出些许改变
- TCP 服务端接收数据解析工具类
package com.ivchat.common.util; import java.io.BufferedReader;import java.io.IOException;import java ...