SHELL编程练习-复制指定文件(保持文件所在目录结构)
2018-02-13 09:33
573 查看
1. 目的
将/root 目录下的所有大于1M(可自定义) 的文件拷贝到 /tmp/BakDir(可自定义) 目录,需要保持目录结构。
例如 /root/reed.file 文件大小为 12M,则会被拷贝到 /tmp/BakDir/root/ 路径位置。
2. 难度
需连同文件所在的路径一起拷贝。
3. 知识点
3.1文件和目录的操作(dirname命令)
3.2文件查找操作(find命令)
3.3SHELL编程基础
4. 思路与具体实现
4.1思路
1)先查找指定的文件;
2)根据查找到的文件,输出其所在路径;
3)创建路径,复制文件。
4.2效果
原始目录文件:
复制后的路径文件:
4.3具体实现
将/root 目录下的所有大于1M(可自定义) 的文件拷贝到 /tmp/BakDir(可自定义) 目录,需要保持目录结构。
例如 /root/reed.file 文件大小为 12M,则会被拷贝到 /tmp/BakDir/root/ 路径位置。
2. 难度
需连同文件所在的路径一起拷贝。
3. 知识点
3.1文件和目录的操作(dirname命令)
3.2文件查找操作(find命令)
3.3SHELL编程基础
4. 思路与具体实现
4.1思路
1)先查找指定的文件;
2)根据查找到的文件,输出其所在路径;
3)创建路径,复制文件。
4.2效果
原始目录文件:
[root@reedoracle BakDir]# find /root -size +1M |xargs ls -lh -rw-r--r-- 1 root root 4.7M Jan 17 2017 /root/ansible-packages/ansible-2.2.1.0-1.el6.noarch.rpm -rw-r--r-- 1 root root 1.5M Jul 3 2011 /root/ansible-packages/python-babel-0.9.4-5.1.el6.noarch.rpm -rw-r--r-- 1 root root 7.5M Feb 3 2017 /root/ansible-packages.tar.gz -rw------- 1 root root 6.3M Mar 14 2017 /root/.cache/pip/http/6/b/5/7/b/6b57b626d79b36c0d0749210d43211130a56666ce3959ca91a518127 -rw-r--r-- 1 root root 13M Feb 6 13:54 /root/dir1/dir2/file2 -rw-r--r-- 1 root root 15M Feb 6 13:55 /root/dir1/dir3/file3 -rw-r--r-- 1 root root 23M Feb 6 13:54 /root/dir1/file1-1 -rwxr-xr-x 1 root root 3.7M Nov 18 03:31 /root/nginx-1.12.2/objs/nginx -rw-r--r-- 1 root root 2.0M Nov 18 02:53 /root/pcre-8.40.tar.gz -rw-r--r-- 1 root root 1.2M Mar 8 2017 /root/PI.DAT
复制后的路径文件:
[root@reedoracle BakDir]# find /tmp/BakDir -size +1M |xargs ls -lh -rw-r--r-- 1 root root 4.7M Feb 12 12:19 /tmp/BakDir/root/ansible-packages/ansible-2.2.1.0-1.el6.noarch.rpm -rw-r--r-- 1 root root 1.5M Feb 12 12:19 /tmp/BakDir/root/ansible-packages/python-babel-0.9.4-5.1.el6.noarch.rpm -rw-r--r-- 1 root root 7.5M Feb 12 12:19 /tmp/BakDir/root/ansible-packages.tar.gz -rw------- 1 root root 6.3M Feb 12 12:19 /tmp/BakDir/root/.cache/pip/http/6/b/5/7/b/6b57b626d79b36c0d0749210d43211130a56666ce3959ca91a518127 -rw-r--r-- 1 root root 13M Feb 12 12:19 /tmp/BakDir/root/dir1/dir2/file2 -rw-r--r-- 1 root root 15M Feb 12 12:19 /tmp/BakDir/root/dir1/dir3/file3 -rw-r--r-- 1 root root 23M Feb 12 12:19 /tmp/BakDir/root/dir1/file1-1 -rwxr-xr-x 1 root root 3.7M Feb 12 12:19 /tmp/BakDir/root/nginx-1.12.2/objs/nginx -rw-r--r-- 1 root root 2.0M Feb 12 12:19 /tmp/BakDir/root/pcre-8.40.tar.gz -rw-r--r-- 1 root root 1.2M Feb 12 12:19 /tmp/BakDir/root/PI.DAT
4.3具体实现
[root@reedoracle ~]# cat CpFiles.sh #!/bin/bash #Func:cp files include directory #Author:reed . /etc/profile SourcePath="/root" DestPath="/tmp/BakDir" #mkdir backup directory [ ! -d $DestPath ] && mkdir -p $DestPath Func_CpFiles() { for FileList in $(find $SourcePath -size +1M);do #mkdir [ ! -d ${DestPath}$(dirname $FileList) ] && mkdir -p ${DestPath}$(dirname $FileList) #copy cp -rf $FileList ${DestPath}$(dirname $FileList) done } Func_CpFiles
相关文章推荐
- Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例
- [C#] 筛选复制文件并保持原有的目录结构
- linux命令:批量将查找到的文件移动或者复制到其他目录并尽可能保持原文件的目录结构
- java 复制文件夹下所有文件到指定的文件夹,不改变目录结构
- windows xcopy 复制文件 且 保持目录结构
- SHELL编程练习-获得指定目录下的所有文件及文件夹的大小
- 查找到文件后复制到另一目录 目录结构保持不变
- [PHP][Function]实现将一个文件夹下的所有文件及文件夹复制到另一个文件夹里(保持原有结构)[已验证][原创]
- 使用python读取指定目录下的源代码并将内容复制到同一新文件中
- Java遍历输出指定目录、树形结构所有文件包括子目录下的文件
- 后台静默检测U盘并复制U盘内指定文件到电脑指定目录(U盘助手)
- C#-文件复制到指定目录和复制文件夹中的所有数据
- MFC 目录选取,指定类型文件查找复制
- 小黑的日常折腾-复制外部命令的可执行文件和依赖库文件到指定目录下的对应目录
- 以树形结构的形式输出指定目录下面的所有文件
- VBA遍历当前目录下指定类型的excel文件并复制文件内指定的内容到新表中
- ubuntu 查找含有特定字符的文件并复制到指定目录
- VS2013 生成时复制文件或目录到指定目录
- linux 复制时保留文件的目录结构
- java递归复制所有指定规则的文件到同一目录下