`
ginaduxuefang
  • 浏览: 90501 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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

#!/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脚本,分别是用于备份文件、重命名文件和删除指定文件的脚本,适合初学者参考和实践。 1. 备份文件的脚本: ```bash #!/bin/bash E_BADARGS=65 case $# in 0) echo "message:param ...

    利用windows shell底层监控文件变化源码

    这些改变可以包括文件或目录的创建、删除、重命名以及属性修改等操作。 `SHChangeNotifyRegister`函数用于注册一个窗口句柄或线程ID,当文件系统发生变化时,Windows Shell会通过发送`WM_SHNOTIFY`消息到指定的窗口...

    VBS批量重命名文件并且操作前备份原有文件

    本段文字介绍了一个使用VBScript (VBS) 语言编写的脚本程序,旨在批量重命名文件,并在进行文件重命名操作之前对原有文件进行备份。以下是对该段文字中的关键知识点的详细解读。 ### 知识点一:VBScript的作用与...

    shell修改文件的方法

    在`Shell`中,可以使用`mv`命令来重命名或移动文件。例如,将所有".txt"扩展名的文件更改为".log": ```bash for file in *.txt; do mv "$file" "${file%.txt}.log"; done ``` 然后,将这些文件移动到指定目录: ```...

    VB监控文件目录修改

    例如,"MoveFile"用于重命名或移动文件,"CreateFolder"用于新建目录,"DeleteFile"和"DeleteFolder"则用于删除文件和目录。同时,VB还可以通过订阅Shell Change Notifications事件来检测更广泛的系统变化,如"改变...

    linux和shell教程

    - `mv`:移动或重命名文件或目录。 - `grep`:在文件或输出中搜索特定文本。 - `find`:在文件系统中查找文件。 - `cat`:显示文件内容。 - `man`:查看命令的手册页。 4. **Shell编程**:Shell脚本是用Shell...

    linuxshell

    - `mv`: 移动文件或目录,也可以用来重命名文件。 #### 文件操作命令 - `cat`: 显示文本文件内容。 - `more`: 分页显示文本文件内容。 - `less`: 类似于`more`,但提供了更多的导航功能。 - `grep`: 在文件中搜索...

    Unix Shell by Example.zip

    首先,了解基本的Unix命令是使用Shell的基础,例如`ls`用于列出目录内容,`cd`用于切换目录,`pwd`显示当前工作目录,`touch`创建或修改文件时间戳,`rm`删除文件,`mv`移动或重命名文件,以及`cp`复制文件。...

    shell知识交流手册

    通过编写Shell脚本,用户可以自动化执行一系列复杂任务,比如文件备份、系统维护、数据处理等。例如: ```bash #!/bin/bash # 这是一个简单的Shell脚本示例 # 定义变量 filename="example.txt" # 判断文件是否存在 ...

    Linux Shell编程&常用shell命令

    7. **mv**:移动或重命名文件或目录。 8. **touch**:创建新文件或更新文件时间戳。 9. **cat**:查看或合并文件内容。 10. **more** 和 **less**:分页查看文件内容。 11. **find**:在文件系统中查找文件。 12. **...

    常用shell脚本示例

    1. **文件和目录操作**:例如,创建、删除、移动、重命名文件或目录的脚本,这涉及到`touch`, `rm`, `mv`, `cp`, `mkdir`, `rmdir`等命令。 2. **条件语句和循环**:如`if...else`结构用于基于特定条件执行不同任务...

    学习shell的入门资料(shell十三问+shell基础十二篇)doc版

    - **文件操作**:如`ls`列出目录内容,`cd`切换目录,`touch`创建新文件,`rm`删除文件或目录,`cp`复制文件,`mv`移动或重命名文件。 - **管道与重定向**:`|`用于将一个命令的输出作为另一个命令的输入,`>`和`...

    shell编程和unix命令.rar_Linux命令_she_shell_shell linux_shell 编程

    6. `mv`:移动或重命名文件或目录。 7. `grep`:在文件中搜索特定模式。 8. `find`:查找满足特定条件的文件。 9. `cat`:查看或连接文件内容。 10. `vi/vim`:文本编辑器,用于创建和编辑文件。 在...

    操作系统接口Shell命令语言

    文件操作命令涉及查看、拷贝、比较、重命名和删除文件。目录操作则包括创建、查看、删除子目录以及展示目录结构。此外,还有输入输出重定向、管道连接、过滤命令和批命令等功能,它们使得用户可以灵活地控制数据流向...

    shell初学者命令加编程实例

    如`ls`用于列出目录内容,`cd`用于切换目录,`pwd`显示当前工作目录,`touch`创建新文件,`mkdir`创建新目录,`rm`删除文件或目录,`cp`复制文件或目录,`mv`移动或重命名文件和目录。这些都是进行日常文件管理的...

    korn shell manual

    * `mv` 命令:用于移动或重命名文件或目录。 Korn Shell 的高级功能: * 命令history:Korn Shell 可以记录用户输入的命令,并可以使用 `history` 命令来查看和重复执行这些命令。 * 命令编辑:Korn Shell 支持...

    unix及shell基础

    Unix系统中包含大量命令,如`ls`列出目录内容,`cp`复制文件,`mv`移动或重命名文件,`rm`删除文件,`mkdir`创建目录,`cd`改变目录,`cat`查看文件内容,`more`或`less`分页查看文件,`grep`搜索文件中的特定模式。...

Global site tag (gtag.js) - Google Analytics