因为经常会用到shell脚本,所以经常会写一些,但是我从来没有系统的学习过shell脚本,遇到问题,就去看手册,或者google一下,到了一定的程度才发现自己的基础真的好差。下面在系统学习shell时,顺便写了点有用的小脚本。

1,备份目录下面文件

#!/bin/bash
E_BADARGS=65 case $# in //$#表示转入参数的个数,sh bak.sh ./ .sh 有二个参数./和.sh
0) // 参数为空时,提示错误,并且退出
echo "message:param is wrong"
exit $E_BADARGS;;
esac string=" " cd $1 //进入传入的目录 //备份子目录中的文件时,参数也要接上
if [ $# -gt "1" ]
then
string=$string" "$2
fi for filename in * //读取当前目录中的文件
do
if [ -d "$filename" ] //判断一下是不是目录
then
/bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string //是目录的话,进行递归
else
if [ $# -gt "1" ] && [ ${filename:(-${#2})} = $2 ] //指定备份什么样的文件
then
cp $filename $filename"bak"
fi
if [ $# -eq "1" ]
then
cp $filename $filename"bak" //没指定,备份目录下面的所有文件
fi
fi
done
exit 0
[zhangy@BlackGhost test]$ sh bak.sh ./ .sh  这句话的意思是把当前目录(以及子目录)中的所有以.sh为后缀的文件,进行备份、

2,重命名文件

#!/bin/bash
E_BADARGS=65 case $# in
0|1|2)
echo "message:param is wrong"
exit $E_BADARGS;;
esac string=" "
cd $1 if [ $# -gt "2" ]
then
string=$string" "$2" "$3
fi for filename in *
do
if [ -d "$filename" ]
then
/bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string
else
if [ $# -gt "2" ] && [ ${filename:(-${#2})} = $2 ]
then
mv $filename ${filename%$2}$3
fi
fi
done
exit 0
   

[zhangy@BlackGhost test]$ sh rename.sh /home/zhangy/test .php .html  这句话的意思是说,把当前目录(包括子目录)下的所有以.php为后缀的文件,重命名为.html

3,删除指定文件

#!/bin/bash
E_BADARGS=65 case $# in
0|1)
echo "message:param is wrong"
exit $E_BADARGS;;
esac string=" "
cd $1 if [ $# -gt "1" ]
then
string=$string" "$2
fi for filename in *
do
if [ -d "$filename" ]
then
/bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string
else
if [ $# -gt "1" ] && [ ${filename:(-${#2})} = $2 ]
then
rm -f $filename
fi
fi
done
exit 0
   

[zhangy@BlackGhost test]$ sh del.sh /home/zhangy/test .log 删除/home/zhangy/test,以及子目录下所有以.log为后缀的文件

链接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取码:x2p5

免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群 群号936682608

 

4,小结

通过上面例子的练习,总结有以下几点

1,传参数到shell脚本,一般传参数可以通过url或者是form表单,像这样index.php?name=tank,但是shell不能这样,他传参数直接根shell脚本的后面,像这样rename.sh /home/zhangy/test .php .html 向rename.sh传了3个参数,分别是/home/zhangy/test .php .html

2,case语句,if语句的思想差不多,就是写法不一样,多看看,多练练就会适应了。

3,如果将命令的输出,负值给一个变量,语法是$(shell command)  例如 :$(pwd)显示当前目录

4,变量的截取,变量之间的比较等,上面的例子虽然非常的简单,但是包括的知识点还是不少的。

shell备份,重命名,删除目录下面的文件的更多相关文章

  1. shell 批量重命名

    原文链接https://www.cnblogs.com/sunmmi/articles/6709125.html shell 批量重命名   1.把文件名的第一字母批量改成a 方法一: 1 2 3 4 ...

  2. Perl重命名当前目录下的文件

    下载的zip包解压后,中文都变成了乱码,就写了个脚本重命名文件. use strict; use warnings; use Cwd; sub main { my $dir = getcwd(); o ...

  3. mac文件夹怎么重命名?苹果电脑文件夹重命名快捷键

    windows系统下给文件夹重命名相信很多朋友都很熟悉,那么Mac OS系统怎么给文件重命名呢,相信很多刚刚入手Mac OS系统的亲们都会有次疑问,下面小编告诉你Mac OS系统的文件夹到底要怎样才能 ...

  4. webApi上传服务,可重命名,可创建文件夹

    webApi上传服务,根据FileName重命名,根据Path创建文件夹 /// <summary> /// 上传文件 /// </summary> /// <retur ...

  5. java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)

    欢迎加入刚建立的社区:http://t.csdn.cn/Q52km 加入社区的好处: 1.专栏更加明确.便于学习 2.覆盖的知识点更多.便于发散学习 3.大家共同学习进步 3.不定时的发现金红包(不多 ...

  6. 批量重命名B站下载文件

    将B站下载的文件统一修改文件名 事情来由 事情是这样的,我在B站上发现一个教程,看了一下,非常不错,于是想下载下来(免得B站和谐). 问题就是这样来了,我手机没多少内存,下载后下发现文件在手机中都是以 ...

  7. bat文件重命名指定路径下文件

    ren "E:\产品\Planning\C1-Planning11\C1-Planning11\target\123" 456 此命令是将文件123重命名为456 注意:456是文 ...

  8. django如何给上传的图片重命名(给上传文件重命名)

    1.先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在storage.py中添加如下代码: # -*- coding: UTF-8 -* ...

  9. windows下使用php重命名目录下的文件

    rename函数一直报错,最后发现是windows下文件名的编码问题,如果项目文件是utf-8的话,一定要经过一步转码 $dir = $path . '/../resource/logo'; $han ...

  10. R语言 重命名目录下所有文件

    myfilepath <- "F:/paper2/climateExposure/wjj_mec/second/paths/" setwd(myfilepath) allty ...

随机推荐

  1. WPF控件介绍(2)

    上一章讲到了布局.这点就有点类似建筑设计.第一步是出图纸.整体的结构.而第二步就是堆砌, 建筑学里面也会有很多描述, 例如砖头,水泥.玻璃.瓷板.而在WPF中, 这一切的基础也就是控件.用于填充结构的 ...

  2. SharePoint Rest Api Caml multiple condition query -Rest api 利用Caml多个条件查询

    $.ajax({ var cquery="<View><Query><Where><And><Geq><FieldRef N ...

  3. Django框架(十一)-- 补充:inclusion_tag、defer、only、choice、事务、创建多对多的第三张表、mvc和mtv模式

    一.inclusion_tag 1.作用 用于生成HTML片段,是数据由参数传入而变成动态 2.使用 # 1.app下新建一个模块,templatetags # 2.创建一个py文件(mytag.py ...

  4. Linux下virtualenv与virtualenvwrapper详解

    在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的工程使用 ...

  5. 使用apache.tika判断文件类型

    一. 判断文件类型一般可采用两种方式 1. 后缀名判断 简单易操作,但无法准确判断类型 2. 文件头信息判断 通常可以判断文件类型,但有些文件类型无法判断(如word和excel头信息的前几个字节是一 ...

  6. 为 Jupyter 添加目录

    1.依次在 anaconda prompt 窗口中执行以下两句命令 pip install jupyter_contrib_nbextensions # 安装第三方包 jupyter contrib ...

  7. Python+OpenCV4:读写输入和输出的简单实践(图片、视频、摄像头)

    典型的文件处理流程如下: 利用命令行参数 sys.argv 命令行参数是读取文件时常用的方式. 命令行参数保存在 sys.argv 的列表中,列表的第一个元素是脚本名称,后面的元素是命令行参数: 通过 ...

  8. 数据结构篇——平衡二叉树(AVL树)

    引入 上一篇写了二叉排序树,构建一个二叉排序树,如果构建序列是完全有序的,则会出现这样的情况: 显然这种情况会使得二叉搜索树退化成链表.当出现这样的情况,二叉排序树的查找也就退化成了线性查找,所以我们 ...

  9. django中运行定时任务脚本

    需要使用到django_apscheduler模块,因此先安装: pip install django-apscheduler 然后在工程的settings.py文件中的INSTALLED_APPS模 ...

  10. 破解优酷VIP视频

    目录 一 破解优酷VIP视频 一 破解优酷VIP视频 import requests import re import json HEADERS = { 'user-agent': 'Mozilla/ ...