`
hudeyong926
  • 浏览: 2016420 次
  • 来自: 武汉
社区版块
存档分类
最新评论

shell备份,重命名,删除目录下面的文件

 
阅读更多

因为经常会用到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为后缀的文件

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备份文件、重命名文件、删除指定文件的3个脚本分享

    主要介绍了shell备份文件、重命名文件、删除指定文件的3个脚本分享,是学习shell时的练习脚本,shell新手朋友可以参考下哦

    rar压缩软件.rar

    下面的命令会把 Bitmaps 目录和它的子目录中的所有文件添加到 RAR 压缩文件 Pictures.rar 中: rar a Pictures.rar Bitmaps 4) 如果目录包含文件掩码或以反斜线结尾,将会应用普通的规则,你 需要指定 -r 开关...

    cloudpan189-go:天翼云盘命令行客户端(CLI),基于GO语言实现

    编译(待补充)目录退出天翼云盘帐号切换云工作模式(个人云/家庭云)签到获取网盘配额切换工作目录输出工作目录列出目录下载文件/目录上传文件/目录备份文件/目录手动秒传文件创建目录删除文件/目录拷贝文件/目录转存...

    Linux指令一周通 (技术图书大系).azw3

    1.67 rm指令:删除文件或目录 1.68 tac指令:反序输出文件 1.69 tar指令:打包同时压缩/解压缩文件 1.70 tee 指令:从标准输入读取数据到标准输出,同时保存为文件 1.71 tftp指令:传输文件 1.72 tmpwatch指令:删除...

    梓豪平台是一个docker 容器化管理平台 包括主机管理,手工制作镜像,镜像管理,ci/cd 构建和应用管理的paas平台

    主要功能(多租户管理、多主机管理、web shell功能、文件系统、应用管理、ci/cd 持续集成功能、docker 镜像管理、mysql web 操作控制、 数据备份功能 分为文件 和数据库备份 可以备份到 ftp oss 和mysql 数据库、...

    dos命令大全.pdf

    ICACLS 显示、修改、备份或还原文件和 目录的 ACL。 IF 在批处理程序中执行有条件的处理操作。 LABEL 创建、更改或删除磁盘的卷标。 MD 创建一个目录。 MKDIR 创建一个目录。 MKLINK 创建符号链接和硬链接 MODE ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux...

    HP-UX系统管理(高级)

    2.4.9 mv——移动或重命名文件.22 2.4.10 ln——对文件进行链接.23 2.4.11 rm——删除文件23 2.5 实验24 第3章文件访问权限27 3.1 课程目标.错误!未定义书签。 3.2 谁有权访问文件.27 3.3 访问类型27 3.4 文件权限...

    大量批处理实用程序例程

    本资源由大量的实用批处理文件组成,删除.txt尾缀名双击即可直接使用,既是学习的模板也可以作为实用程序,如下为文件组成,涉及文件管理,系统,网络,小工具等等: 0-reaname 2000XP停止打印.bat BAT珍藏 dir.bat...

    cmd操作命令和linux命令大全收集

    del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同) move 盘符路径要移动的文件名 存放移动文件的路径...

    rsync-snapshots:又一个备份工具

    通过 ssh 上的 rsync 将指定目录/文件的快照备份创建到远程服务器中。 基于此处描述的脚本: : ,但该脚本提供了从本地备份到远程的能力。 目的 rsync over ssh 用于通过增量传输算法传输文件,以仅传输文件的最小...

    linux-bin:一些Linux脚本

    converter 归一化当前目录中的所有音频文件,保存到m4a aac带负号的split_filenames_with 将文件重命名为'20190530T140447.ogg'->'2019-05-30-14-04-47.ogg'dobro-backup.sh 从该存储库下载所有脚本,备份一些其他硬...

    dropbox-sync:Dropbox 的 CLI 客户端

    Dropbox 同步 从分叉 此脚本现已修改为支持 ... 删除/移动/重命名/复制/列出文件 创建分享链接 安装 $ wget https://code.stats.io/dropbox-sync.sh $ chmod 755 dropbox-sync.sh $ mv dropbox-sync.sh /usr/bin $ echo

    X-Plore File Manager Pro 4.14.01.apk

    您可以浏览设备的内部,如果您是高级用户并且设备已植根,则可以更改系统数据 - 备份文件,删除不需要的应用程序等。 如果您是标准用户,您可以选择隐藏内部存储器,并确保不要弄乱系统。 您可以在设备上轻松查看大...

    X-Plore_File_Manager_Donate_v4.18.12.apk

    您可以浏览设备的内部结构,如果您是高级用户并且已扎根设备,则可以更改系统数据-备份文件,删除不需要的应用程序等。 如果您是标准用户,则可以选择从视图中隐藏内部存储器,并确保不要与系统混淆。 您可以...

    700个批处理打包下载.rar

    文件备份器V2.3修改版2.cmd 文件夹伪装.TXT 文件归类整理器 V1.1(子目录版).bat 文件归类整理器 V1.1(指定路径带子目录版).bat 文件归类整理器(当前目录版).bat 文件数目分类统计.cmd 断开网络联结.bat 无限制实数加...

    Linux高级bash编程

    删除当前目录下文件名中包含一些特殊字符(包括空白)的文件.. 12-4. 通过文件的 inode 号来删除文件 12-5. Logfile: 使用 xargs 来监控系统 log 12-6. 把当前目录下的文件拷贝到另一个文件中 12-7. 通过名字Kill进程...

    Advanced Bash-Scripting Guide <>

    删除当前目录下文件名中包含一些特殊字符(包括空白)的文件.. 12-4. 通过文件的 inode 号来删除文件 12-5. Logfile: 使用 xargs 来监控系统 log 12-6. 把当前目录下的文件拷贝到另一个文件中 12-7. 通过名字Kill ...

Global site tag (gtag.js) - Google Analytics