shell初次使用

写作目的

初次使用shell来实现小功能,其间略显磕绊,故进行记录,作为后续使用的代码速查。

需求

需要将符合特定业务条件的大量图片copy到本地,同时将文件拆分到不同的子文件夹(利于分工),用于对图片进行人工筛选,形成测试集。

实现思路

将数据库中符合条件的图片导出为txt文件,然后用shell读取txt,实现图片集拷贝拆分。(优势:灵活、无需部署、随时调整)

源代码

#!/bin/bash
filepathlist=/opt/filelist.txt
destdir=/opt/d
cursubdir=0
percount=400
curcount=0
cursubcount=0
misscount=0
successcount=0
if [ ! -d "$destdir" ]; then
mkdir -p "$destdir"
fi
while read line
do
curcount=$[ curcount+1 ]
cursubcount=$[ cursubcount+1 ]
echo $line
array=(${line//,/ })
filepath=${array[2]}
echo $filepath 
if [ ! -f "$filepath"  ] ; then
echo "$filepath miss!"
misscount=$[ misscount+1 ]
continue
fi
if [ $cursubcount -eq 1 ];then
cursubdir=$[ cursubdir+1 ]
fi
if [ $[ curcount%percount ] -eq 0 ];then
cursubcount=0
fi
if [ ! -d "$destdir/$cursubdir" ]; then
mkdir "$destdir/$cursubdir"
fi
nfname="${array[0]}-${array[1]}-${filepath##*/}"
echo $nfname 
cp $filepath  $destdir/$cursubdir/$nfname
echo "copy $filepath to $destdir/$cursubdir/$nfname  success !  "
successcount=$[ successcount+1 ]
done < $filepathlist
echo "$curcount files need copy,$successcount successed,$misscount missed!"

运行

sh  文件名.sh

遇到的问题和处理方式

  1. windows下写好的脚本上传到linux服务器后编译通不过。
    原因:windows的换行符与linux下的不一致。
    处理方式:在windows下用文本编辑器(如notepad++)将文件转换为unix格式。
  2. 文件上传下载,上传命令:rz,下载命令:sz 文件名
  3. 打包解包压缩解压
    打包:tar -cvf 1.tar dir1
    解包:tar -xvf 1.tar
    压缩与解压:在打包和解包命令的option(-xvf)中加入z即可
  4. 文件编辑
    (1)vi 文件名 (2)输入i进入编辑模式(3)编辑文档(4)Esc结束编辑(5)输入:wq回车保存并退出(:q!--退出不保存)
  5. vi进行文件编辑时异常退出导致,每次重新编辑时提示,被提示文件被占用。
    处理方式:把生成的临时文件.文件名.swp文件删除即可。(注:用ls -A可以查到swp文件)
  6. sh 文件名.sh执行成功,用./文件名.sh执行提示-bash: ./文件名.sh: Permission denied。
    处理方式:授予文件可执行权限,命令如下:chmod +x 文件名.sh
  7. 使用cat file|while read line do done时,while循环中对变量的处理在done后面的脚本中无法体现。
    原因:cat file|管道开了子shell,子shell无法访问主shell中的变量。
    处理方式:修改为while read line do done < file
  8. 其他命令见:https://man.linuxde.net/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,306评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,657评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,928评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,688评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,105评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,024评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,159评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,937评论 0 212
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,689评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,851评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,325评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,651评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,364评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,192评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,985评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,154评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,955评论 2 279

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,314评论 0 5
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,473评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,621评论 0 10
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,016评论 0 0
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 5,150评论 0 9