当前位置:  操作系统/服务器>linux

shell备份文件、重命名文件、删除指定文件的3个脚本分享

    来源: 互联网  发布时间:2014-10-17

    本文导语:  因为经常会用到shell脚本,所以经常会写一些,但是我从来没有系统的学习过shell脚本,遇到问题,就去看手册,或者google一下,到了一定的程度才发现自己的基础真的好差。下面在系统学习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,变量的截取,变量之间的比较等,上面的例子虽然非常的简单,但是包括的知识点还是不少的。


    
 
 

您可能感兴趣的文章:

  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • 请教 一个shell问题 如何通过shell获得一个日志文件中的增量部分
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • 请教一个shell编程的问题,就是如何在shell编程中读一个文件的内容?谢谢啦!
  • 在调用shell的程序文件时,怎样才能使编译后的可执行文件运行,象在shell状态下那样直接用咋不行呢?
  • shell:sql问题,如何shell循环将不同表数据写入文件中...
  • 在shell命令行中敲一个可执行文件,起一个进程pc,这个进程属于shell进程
  • Shell脚本如何递归现实一个文件夹中的文件(文件夹中含有文件夹)
  • 请教:shell遍历文件夹,处理其中的文件。
  • 急!如何从一个shell文件中传递一个参数到sql文件中,不能用存储过程
  • shell脚本剪切文件文件,并生成新文件的问题
  • shell 按当前时间作为文件名建立文件夹
  • 我想写一个shell脚本 把当前文件夹下的所有文件名改名
  • 请问如何用shell脚本将一个文本文件的某几行输入到另一个文件中。
  • 如何删除目录中文件名小于某个字符串的所有文件 shell
  • 求一个shell脚本 统计文件数目并删除一些文件
  • 怎么用shell创建连续文件名的文件??
  • 合并一个文件夹下多个文件内容的单行shell命令
  • Shell获取文件的文件名和扩展名的例子
  • shell脚本如何调用另外一个shell脚本的函数?
  • shell 脚本中命令别名在脚本外无法使用
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • 想用shell脚本定时执行另一个脚本
  • 一个shell执行另一个带参数shell脚本????????????
  • 如何给shell脚本加密,脚本中有密码。最好是比较直接的,不要说让用 shc
  • Shell脚本调用Sql脚本并向其中传递变量
  • 请问,Shell中如何执行另外一个Shell脚本?
  • 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux装好了要做那些shell程序做备份呢?
  • 哪位有shell写的mysql备份脚本阿,想借鉴看下,谢谢
  • 请问怎样用shell脚本编写Linux下的文件备份程序
  • 备份网站内容的shell脚本代码
  • 如何用shell备份某一个目录中修改日期是当天的文件
  • 一键备份gitolite服务器的Shell脚本
  • 简单的远程FTP定时备份Shell脚本分享
  • linux下实现ftp自动备份shell脚本
  • 简单的文件备份和复制问题,如何写shell
  • 如何编写一个shell,拷贝一个备份文件后把原文件清空?
  • linux中mysql备份shell脚本代码
  • Shell脚本定时备份清除运行系统日志的代码
  • 增了备份,shell脚本如何写才能遍历到bin日志记录呢?
  • shell实现自动备份mysql、整站数据的两个脚本分享
  • 两个备份数据库的shell脚本
  • linux下自动备份MySQL数据并上传到FTP上的shell脚本
  • 3个备份系统文件并邮件发送的Shell脚本分享
  • 备份shell脚本实例代码
  • linux bash shell命令:grep文本搜索工具简介
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 请问“当前shell”和“子shell”的区别?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3