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
AI 代码解读

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

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

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

第三,本脚本的主要流程是这样的:首先判断源文件目录是否存在,如果不存在,则直接打印源目录不存在的消息;如果存在,则获取源目录下的文件数目,如果文件数为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给开发者带来的一大便利。

目录
打赏
0
0
0
0
260
分享
相关文章
|
8天前
|
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
54 19
|
22天前
|
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
47 5
Linux 常用文件查看命令
|
1天前
|
如何创建Linux交换文件?Linux交换文件最新创建方法
Swap是Linux中的虚拟内存空间,用于在物理内存不足时将非活动进程移至磁盘,从而优化活动进程的性能。通过创建交换文件(如1GB),可灵活调整交换空间而无需重新分区。步骤包括:使用`fallocate`或`dd`创建文件、设置权限 (`chmod 600`)、格式化 (`mkswap`)、启用交换 (`swapon`)、修改`/etc/fstab`以持久化配置,以及调整`vm.swappiness`值(默认60,建议从10开始)来平衡内存与交换的使用。最后通过`swapon -s`检查状态并重启生效。此方法适用于VPS和专用服务器,需以root用户操作。
17 2
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
38 2
Linux|Transfer.sh 轻松实现文件共享
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
136 1
|
2月前
|
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
50 14
|
2月前
|
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
41 3
|
5天前
|
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
87 56
|
5天前
|
linux常用命令详细说明以及案例
本文介绍了Linux中几个常用的命令及其用法,包括:`ls`(列出目录内容)、`cd`(切换目录)、`mkdir`(创建目录)、`rm -p`(删除目录及内容)和`mv`(移动或重命名文件/目录)。每个命令都配有详细说明、语法格式、常见选项及实用案例,帮助用户更好地理解和使用这些基础命令。内容源自[linux常用命令详细说明以及案例](https://linux.ciilii.com/show/news-285.html)。
|
2月前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
108 24
Linux系统之whereis命令的基本使用