Linux下文件剪切的sh脚本实现

简介: 编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作。

需求描述
编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作。

其中,文件移动之前所在的目录称为源目录,文件移动之后所在的目录称为目的目录。要求当源目录不存在、源目录下无文件及剪切文件成功时,均要在屏幕上输出相关的日志信息;并且,在程序执行之前,只有源目录是存在的,目的目录需要由程序创建。

shell脚本

umask 0000
if [ -d $1 ]
then
    fcnt=`ls -l $1 | wc -l`
    if [ $fcnt -ne 1 ]
    then
        mkdir -p $2
        if [ -d $2 ]
        then
            mv $1* $2
            echo "move $fcnt file(s) from $1 to $2 successfully!"
        else
            echo "$2 does not exist!!!"
        fi
    else
        echo "$1 is empty!"
    fi
else
    echo "$1 does notexist!!!"
fi

脚本说明
针对本shell脚本(命名为movefile.sh),说明如下:

第一,脚本第一行“umask 0000”表示赋予程序访问文件的权限,因为后续要对文件进行剪切操作,所以必须要有对文件的操作权限才行。

第二,执行脚本的时候,要输入两个参数,第一个表示源文件目录,第二个表示目的目录。具体到脚本中,变量$1表示源文件目录,变量$2表示目的目录。

第三,本脚本的主要流程是这样的:首先判断源文件目录是否存在,如果不存在,则直接打印源目录不存在的消息;如果存在,则获取源目录下的文件数目,如果文件数为0,那么表示无需要剪切的文件,那么直接打印源目录下无文件的消息;如果文件数大于0,那么就创建目的目录,并在目的目录创建成功的情况下之行文件的剪切操作。

第四,执行本脚本的命令格式为:sh movefile.sh 源文件目录 目的目录。注意,两个目录均要以/结束。

脚本执行
将movefile.sh脚本上传到Linux机器上,然后对它进行测试。

第一,当源文件目录不存在时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/
/home/zhou/movefile/srcdir/ does notexist!!!

第二,当源文件目录下无文件时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/

/home/zhou/movefile/srcdir/ is empty!

第三,当源文件目录下有1个文件时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/

move 1 file(s) from /home/zhou/movefile/srcdir/ to /home/zhou/movefile/destdir/ successfully!

第四,当源文件目录下有10个文件时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/

move 10 file(s) from /home/zhou/movefile/srcdir/ to /home/zhou/movefile/destdir/ successfully!

总结
本文中的需求,如果有高级语言(如C语言)实现,那么代码行数至少在100行以上,而如果有shell脚本实现,那么仅需要20行左右的代码即可搞定。如此可以看出,shell命令的强大,这也算是Linux给开发者带来的一大便利。

目录
相关文章
|
12天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
23天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
55 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
9天前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
67 14
|
8天前
|
存储 NoSQL Linux
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
35 6
|
10天前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
49 6
|
2月前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
44 5
|
2月前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
55 6
|
8月前
|
Linux
百度搜索:蓝易云【Linux中如何对文件进行压缩和解压缩?】
这些是在Linux中进行文件压缩和解压缩的常见方法。根据您的需求和具体情况,可能会使用其他压缩工具和选项。您可以通过查阅相应命令的帮助文档来获取更多详细信息。
94 1
|
8月前
|
NoSQL Java Linux
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
|
8月前
|
算法 Java Linux
Linux下文件增删改查定位压缩操作与权限所属用户
Linux下文件增删改查定位压缩操作与权限所属用户
79 0