linux中循环删除脚本,shell脚本:遍历删除

遍历删除文本内路径上文件

windows上测试可以安装Git linux中,准备删除文件的脚本deleteFile.sh,picture.txt保存待删除文件的文件路径,picture文件夹下面有三张待删除图片a/b/c.jpg

deleteFile.sh脚本如下:

#!/bin/bash

#shell脚本 保存路径的文本

#./deleteFile.sh ./picture.txt

#判断位置参数是否为1

if [ $# -ne 1 ];then

echo "Usage $0 filename"

exit

fi

#判断位置参数是否为文件

if [ ! -f $1 ];then

echo "the $1 is not a file"

exit

fi

#待删除文件路径的文本

filename=$1

echo "filename: $filename" >> info.txt

#计算待删除的文件数量(总行数)

NUM=`sed -n '$=' $filename`

echo "picture delete num: $NUM"

#逐行读取文件内容并删除对应路径的文件

success=0

for i in `cat $filename`

do

#成功信息重定向输出到info.txt

echo "delete success: $i" >> info.txt

rm -rf $i

success=`expr $success 1`

done

echo "success delete num: $success"

执行./deleteFile.sh ./pictureWIn.txt命令后,权限不够,使用chmod命令对shell脚本赋予权限 chmod 777 ./deleteFile.sh

看到打印的语句,命令已经执行,但是最后图片缺没有全部删除,只删除了最后一张c.jpg

修改pictureWIn.txt文件内容,发现只有放在最后一行的数据能被删除成功,前面的数据都删除失败

:<

直接执行三条删除语句,又是可以成功删除三张图片。

#----------------------------Test----------------------------------

#for循环读取文件内容并保存到picture数组

n=1

for i in `cat $filename`

do

picture[$n]=$i

#echo "picture[$n]: $i"

#rm -rf $picture[$n]

n=`expr $n 1`

done

#while循环读取文件内容并保存到delete数组

i=1

while read line

do

delete[$i]="$line"

i=`expr $i 1`

done < $filename

#遍历数组并删除文件

#for i in ${picture[*]}

#for i in `seq $NUM`

for ((i=NUM;i>=1;i--))

do

echo "delete success: ${picture[$i]}"

rm -rf ${picture[$i]}

done

尝试将文本内容读取后存放在数组,然后再删除,结果还是一样。

偶然间发现存放删除文件路径的文本是在windows下创建的,在linux下新建picture.txt文件,执行./deleteFile.sh ./picture.txt命令后,成功删除。

在Linux下和Windows下新建一个文本文件,注意只是新建,并不向文件中写入数据,此时两个文件是一样的。此时的文件(不管是何处新建的)放在Windows下和Linux下都是一样的。

但是一旦修改则不一样。在Linux下修改并保存,则换行是 \n ,在Windows下修改并保存,则换行是 \r \n 。

并且,一旦修改并保存,则该文件的换行是 \n 还是 \r \n 都是不会变了,除非人为的修改,只是修改保存其中的内容,换行的内容是不会变的。例如:换行是 \n 的文件放在Windows下增加一个换行(使用的编辑工具是Nodepad ),Windows下增加的换行还是 \n ;换行是 \r \n 的文件放在Linux下增加一个换行(使用的工具是vim),Linux下增加的换行还是 \r \n 。

遍历删除路径下带有指定字符串的文件

系统生成的zip和xlsx文件带有日期(如20191212xxxx.zip),一段时间后需要删除之前无用的文件,或者移除文件到/recycleBin回收站中。

#!/bin/bash

#移除/删除文件路径

removeFolder="../recycleBin"

dir="./"

#输入待删除文件的日期 ./deleteZip.sh 20191212

removedate=$1

#判断位置参数是否为空

if [ $# -ne 1 ];then

echo "Usage $0 removedate"

exit

fi

echo "removedate: $removedate"

#获取文件夹下面所有文件名称

files=$(ls $dir)

#echo $files

#循环遍历删除匹配的文件

for file in ${files[*]}

do

#echo $file

# 删除压缩包文件

if [[ $file = $removedate*.zip ]];then

echo "delete $dir/$file"

rm -rf $dir/$file

#echo "remove $dir/$file to $removeFolder"

#mv ./$file $removeFolder/.

# >> del$removedate.log

fi

# 删除excel文件

if [[ $file = $removedate*.xlsx ]];then

echo "delete $dir/$file"

rm -rf $dir/$file

#echo "remove $dir/$file to $removeFolder"

#mv ./$file $removeFolder/.

# >> del$removedate.log

fi

done

echo "delete success!"

设置固定时间自动执行脚本

crontab -e #设置自动执行

51 16 * * 1 sh ../shell/deleteZip.sh #设置每个周一的16:51时,自动执行deleteZip.sh脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 内核级资源查看,Linux资源管理

前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法.前提条件如果想控制进程的IO优先级, 需要内核的支持, 内核编译时需要打开下面2个参数.CONFIG_BLK_CGROUPyCONFIG_CFQ_GROUP_IOSCHEDy查看是否开启这2个内核编译选…

linux cpu uuid 查看,Linux下查看UUID方法介绍

Linux下查看UUID方法介绍。1. sudo blkid/dev/sda1: UUID”9ADAAB4DDAAB250B” TYPE”ntfs”/dev/sdb1: UUID”B2FCDCFBFCDCBAB5″ TYPE”ntfs”/dev/sdb5: UUID”46FC5C74FC5C5FEB” TYPE”ntfs”/dev/sdb6: TYPE”swap” UUID”2cec6109-5bcf-45a3-ba1b-978b041c037f”/dev/s…

linux 自定义vi dd,Vim常用命令及配置方案

几句话很久之前就接触到vim&#xff0c;初学那阵觉得vim很酷炫&#xff0c;但确实对新手不是很友好。我也就简单看了下基本操作就上手了&#xff0c;但又不是长期在vim下工作&#xff0c;这就导致了每一次重新使用vim都要再去回温下基本操作&#xff0c;很是难受&#xff0c;所…

linux指纹登录实现原理,指纹识别技术原理与基于Linux系统的指纹识别门禁系统设计...

指纹作为人体的身体特征&#xff0c;具有唯一性、稳定性和不易盗用等特点。随着指纹识别理论逐渐成熟、指纹采集工具这一难题得到解决&#xff0c;指纹识别已经成为目前最广泛应用的生物识别之一&#xff0c;逐渐取代了传统的认证识别方式&#xff0c;广泛应用于金融、公安、证…

linux 搜索命令 历史,Linux 控制台神器:搜索历史命令 Ctrl + R ( ctrl + r to search the history command )...

Linux 控制台神器&#xff1a;搜索历史命令 Ctrl R ( ctrl r to search the history command )2013-01-29 15:30访问量: 23761分类&#xff1a;技术Linux下的神器 ctrl r (reverse-i-search ) 的使用方法&#xff1a; (reverse-i-search usage: )(press ctl r ) 输入任意…

linux 有名管道pipe,linux 用無名管道pipe和有名管道fifo實現線程間通信

1.pipe用與實現同一個進程下不同線程間的通信(跟IPC進程間通信中的具有血緣關系的進程通信實現方式一樣)#include #include #include #include #include using namespace std;void *func(void * fd){char str[] "this is write thread!\n";write( *(int*)fd, str, s…

linux apache 跨域,解决nginx/apache静态资源跨域访问问题详解

1. apache静态资源跨域访问找到apache配置文件httpd.conf找到这行#LoadModule headers_module modules/mod_headers.so把#注释符去掉LoadModule headers_module modules/mod_headers.so目的是开启apache头信息自定义模块在独立主机配置文件中新增headerHeader set Access-Contr…

linux wps历史版本下载,WPS Office 2019 For Linux 11.1.0.9604版携新更新发布下载

WPS Office 2019 For Linux 11.1.0.9604版本发布了&#xff0c;仅支持64位计算机&#xff0c;提供Deb和Rpm格式软件包下载。更新详情1、WPS公共&#xff1a;优化界面绘制相关api的调用效率。适配ibus和fcitx框架的输入法&#xff0c;解决无法输入中文&#xff0c;预输入显示等问…

Linux双独立显卡SLI,玩点新奇的 双显卡给你不同的“SLI”效果

显卡老是千篇一律的常规测试对于我们这些测试人员来说早就已经没有什么意思了&#xff0c;无非就是跑分&#xff0c;超频后跑分&#xff0c;拷机等等一些测试项目&#xff0c;常看我们测试的玩家应该也知道同芯片显卡除非是频率的差别非常大才会有较为明显的性能差距体现出来&a…

三个等价c语言表达式,C语言习题综合(20页)-原创力文档

第二章练习题—.选择题1. 以下选项中正确的实型常量2A 0 B 3. 1415 C 0.32910 D .8712.不合法的用户标识符A _123 B printf C A $ D Dim1.表达式3.51/2的计算结果是___2.对数学表达式 ,写出三个等价的c语言表达式_____}第三章 练习题一&#xff0e;选择题1.若a ,b,c都是int型变…

DSP C2000汇编语言,DSPC2000汇编指令

值。XT寄存器的低16位部分是TL寄存器。该寄存器能装载一个16位有符号数&#xff0c;能自动对该数进行符号扩展&#xff0c;然后将其送人32位XT寄存器。XT寄存器的高16位部分是T寄存器。该寄存器主要用来存储16位乘法操作之前的16位整数值。T寄存器也可以为一些移位操作设定移位…

c语言编程算法精选,c语言经典程序算法【DOC精选】.doc

c语言经典程序算法【DOC精选】c语言经典程序算法浏览次数&#xff1a;47017次悬赏分&#xff1a;15 | 解决时间&#xff1a;2007-9-14 10:02 | 提问者&#xff1a;liyufei05j3最佳答案经典C源程序100例【程序1】题目&#xff1a;有1、2、3、4个数字&#xff0c;能组成多少个互不…

android win10 驱动安装失败,解决在win10系统下小米手机驱动安装失败的具体步骤...

随着系统的升级越来越快&#xff0c;对于许多用户的系统都已经升级到win10系统了&#xff0c;win10系统在给用户带来方便的同时&#xff0c;有时候也会遇到一些小麻烦&#xff0c;比如说对于最新的Window10正式版系统而言&#xff0c;基本主流的手机驱动都能自动检测安装。不过…

z3735f android x86,英特尔的Atom Z3735F分析 全文总结_台电 X80HD_平板电脑评测-中关村在线...

硬件配置&#xff1a;英特尔64位提供性能保证台电X80HD双系统使用Intel Atom Z3735F四核处理器&#xff0c;最高睿频可达1.83GHz&#xff0c;其采用64位X86架构&#xff0c;搭载最新一代睿频加速技术&#xff0c;并拥有四核四线程&#xff0c;支持多任务同时处理。英特尔的Atom…

浏览器 android x86,360浏览器x86版下载

360浏览器x86版下载&#xff0c;是专门针对现在越来越多的win10和安卓双系统的国产平板电脑使用的安卓版app,例如台电平板&#xff0c;适用机型 适用于联想K800、联想K900、MOTO MT788、MOTO XT890、Acer联想平板等,只要安装了x86版本就可以愉快的玩耍啦&#xff0c;你还不赶快…

js百度地图android定位不准,百度地图js定位不准

浏览器H5定位即navigator.geolocation&#xff0c;通过IP或者域名的形式&#xff0c;如&#xff1a;http://172.21.3.82:8080 和http://b.cunzhang.com进行访问时&#xff0c;调用navigator.geolocation.getCurrentPosition&#xff0c;打开控制台&#xff0c;你会发现有以下错…

Android在线更新安装包,Android在线更新下载方案

目的App的在线更新是每一个项目必有的功能&#xff0c;但在过程当中会遇到一些问题&#xff0c;在此记录下心得。步骤1、将最新版本号和本地版本号进行对比&#xff1b;2、如需更新&#xff0c;则弹出更新提示对话框&#xff1b;3、下载更新APK文件&#xff0c;并显示进度条和通…

c汇编语言例题,汇编语言例题分析.doc

汇编语言例题分析汇编语言例题分析《汇编语言程序设计》练习题作者名&#xff1a;不详 来源&#xff1a;网友提供 06年6月8日一、基本概念1、8088/8086CPU内部寄存器有______个 ,其中的______是通用寄存器&#xff0c;______是基址和变址寄存器&#xff0c;______是段寄存器&a…

api网关 android,如何通过Android上的retrofit2使用Cognito Credentials调用API网关?

我在我的Android应用程序中使用retrofit2进行任何http / rest调用.现在我需要调用Amazon AWS API Gateway生成的api.AWS文档say我应该生成客户端代码抛出API网关控制台并使用类ApiClientFactory来构建请求&#xff1a;ApiClientFactory factory new ApiClientFactory();// Use…

android测光代码,常用测光表软件:Android篇

《常用测光表软件&#xff1a;Android篇》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《常用测光表软件&#xff1a;Android篇(5页珍藏版)》请在人人文库网上搜索。1、常用测光表软件&#xff1a;Android篇 在Android系统中也有经典的测光表软件。Light Meter测光表…