当前位置: 首页 > Linux

shell脚本:遍历并删除文中路径上的文件

时间:2023-04-06 11:30:49 Linux

windows测试Gitlinux中可以安装脚本deleteFile.sh删除文件,picture.txt保存的是要删除文件的文件路径,里面有图片文件夹a/b/c.jpgdeleteFile.sh下要删除的三张图片脚本如下:/bin/bashshell脚本保存路径text./deleteFile.sh./picture.txt判断position参数是否为1if[$#-ne1];thenecho"Usage$0filename"exitfi判断position参数是否为文件如果[!-f$1];thenecho"the$1isnotafile"exitfitextfilename=$1echo"filename:$filename">>info.txt计算要删除的文件数(总行数)NUM=sed-n'$='$filenameecho"picturedeletenum:$NUM"逐行读取文件内容并删除路径对应的文件success=0foriincat$filenamedo#成功信息重定向输出到info.txtecho"deletesuccess:$i">>info.txtrm-rf$isuccess=expr$success+1doneecho"successdeletenum:$success"执行完./deleteFile.sh./pictureWIn.txt命令后权限为还不够,使用chmod命令给shell脚本授予权限,看到打印出来的语句。命令已执行,但最后一张图片没有删除。仅删除最后一个c.jpg。修改了pictureWIn.txt文件的内容,只能删除放在最后一行的数据。删除成功,但之前的数据删除失败:<=1;i--))doecho"deletesuccess:${picture[$i]}"rm-rf${picture[$i]}done尝试读取文本内容存入数组,并然后删掉,结果还是一样。无意中发现存放删除文件路径的text是在windows下创建的,在linux下新建了一个picture.txt文件,执行./deleteFile.sh./picture.txt命令后成功删除。在Linux和Windows下新建一个文本文件。请注意,它只是一个新的,不会将数据写入文件。这时候两个文件是一样的。这时候文件(不管是在哪里创建的)在Windows和Linux下都是一样的。但是一旦修改就不同了。Linux下修改保存,换行符为n,Windows下修改保存,则换行符为rn。并且,一旦修改保存,文件的换行符是n还是rn都不会改变,除非人为修改,只是修改保存里面的内容,换行符的内容不会改变。例如:Windows下给换行符为n的文件添加换行符(使用的编辑工具是Nodepad++),Windows下给n添加换行符;在Linux下给一个换行符为rn的文件添加一个换行符(使用的工具是vim),Linux下添加的换行符仍然是rn。