源自一个工作需求,我第一次接触了shell

最近工信部要检查实名制,于是上周就有个需求,要求把服务器上的几个文件夹下的照片按照一定格式进行处理。初接到这个任务,我茫然的在想着用java好不好整,还没开始思路,被同事打断说用shell处理,效率高。我之前没接触过shell,只知道那是类似linux命令行的一种脚本语言。

不说了,下面记录下历程。

首先把需求进行分解,先区分出目标文件,在不能损坏原文件情况下(原文件路径还有讯息有程序需要调用),需要复制出去再做处理、复制目的地,应该是项目外的一个文件夹下,

1、在根目录下创建文件夹:pwd显示当前目录;mkdir zhr;

2、在原文件所在目录下执行:区分出文件:ls -l  *.jpg;

3、在原文件所在目录下执行:复制这些文件去目的文件夹:cp *.jpg  /home/webapp/zhr;

4、在生成的新目录下:删除非目标文件:ls|grep WO|xargs rm -rf (删除文件名带'WO'的文件);

5、在生成的新目录下:汇总下多少目标文件:ls |wc -l;

------ 然后就是写xxx.sh 这是可执行脚本,以  #!/bin/bash  开头。通过./xxx.sh来执行;

1、在生成的新目录下:首先是创建test.sh:touch test.sh;

2、在生成的新目录下:对文件进行赋权:chmod 777 test.sh;

3、在生成的新目录下:进入文件:vi test.sh;

4、在生成的新目录下:单击'i'进入编辑模式:(insert)

以下这个脚本,当然不是我写的辣,目前还在捉摸着其中的缘由

#!/bin/bash  
  
for file in $(ls *.jpg)  
do
  
path1=`echo $file|cut -c 1-17`;
echo $path1;
mypath=`echo $file|cut -c 4-11`;
echo $mypath;
path2=$mypath"_RetentionPhotos_76";
echo $path2;
path3="./"${path2};
if [ ! -d $path3 ]; then

	mkdir "$path3";
	
fi

cd "$path3";
	pwd;
	city=`echo $file|cut -c 1-3`;
	echo $city;
	if [ ! -d $city ]; then
		mkdir "$city";
	fi
	cd ..;
	pwd;
filename="WO_"$path1"_17.jpg";
cp $file $path3"/"$city"/"$filename;  
done  
在生成的新目录下:编辑完后按'Esc'进入命令模式;

在生成的新目录下:输入':wq' 保存退出。(当输入:q是不保存的退出)。

在生成的新目录下:执行:find -name "*.jpg"|wc -l 可以查到有多少个目标文件,会发现比原来高一倍

在生成的新目录下:此时:当前的文件目录下,不仅仅有生成的目录,还有原文件,需要删掉原文件:rm -rf *.jpg

再执行:find -name "*.jpg"|wc -l  就恢复了正常。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值