博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本从文件夹中递归提取文件
阅读量:6587 次
发布时间:2019-06-24

本文共 1439 字,大约阅读时间需要 4 分钟。

需求

前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本。

如下面这样的文件结构:

dir1    ├── a    │   ├── b    │   │   └── file1    │   └── file2    ├── c    │   └── d    │       ├── e    │       │   └── file4    │       └── file3    └── file5

我们需要将其中的file1~file5提取出来放到另一个文件夹中。

脚本

脚本getfilefromdir.sh如下:

#!/bin/bash#desc: get file from directory#author: 十年后的卢哥哥(http://www.cnblogs.com/lurenjiashuo/)#example: sh getfilefromdir.sh A BINIT_PATH=${1%/}SAVE_PATH=${
2%/}function checksavepath() { if [ -d $SAVE_PATH ] then rm -rf $SAVE_PATH fi mkdir ${SAVE_PATH} touch $SAVE_PATH".log"}function getfilefromdir(){ for file in ` ls $1` do if [ -d $1"/"$file ] then getfilefromdir $1"/"$file else local path="$1/$file" local name=$file if [ ! -f $SAVE_PATH"/"$name ] then echo "cp ${path} to ${SAVE_PATH}/${name}" cp ${path} "${SAVE_PATH}/${name}" else echo "${path} file already exists" echo "${path}" >> $SAVE_PATH".log" 2>&1 fi fi done}checksavepathfor sfol in ${INIT_PATH}do getfilefromdir ${sfol}done

运行

sh getfilefromdir.sh dir1/ dir2

第一个参数是源文件夹,第二个是目地文件夹(不需要提前创建)。

如果有同名文件,会存在dir2.log中

结果为:

dir2├── file1├── file2├── file3├── file4└── file5

本文出自十年后的卢哥哥博客(http://www.cnblogs.com/lurenjiashuo/),转载请注明原文地址。

转载于:https://www.cnblogs.com/lurenjiashuo/p/get-file-from-dir.html

你可能感兴趣的文章
tableView 的协议方法
查看>>
海量路由表的快速检索问题-Hash/Trie/快速交换
查看>>
BizTalk Orchestration execute Flat file disassembler ReceivePipeline
查看>>
我的友情链接
查看>>
只需三步轻松搞定 Foxmail 发送邮件“错误信息 ssl连接错误 error code 5”
查看>>
使用openssl加密文件
查看>>
启动ssh服务报错
查看>>
AIX系统中如何查看HBA卡的WWPN和微码版本
查看>>
check the manual that corresponds to your MySQL server version for the right syntax to use near
查看>>
spring创建连接池的几种方式
查看>>
在JSTL EL中处理java.util.Map,及嵌套List集合
查看>>
我的友情链接
查看>>
LAMP之网站搭建(二)
查看>>
nginx-负载均衡
查看>>
linux学习计划
查看>>
GCE 部署 ELK 7.1可视化分析 nginx
查看>>
Rancher2.0中邮件通知的设置
查看>>
OSI七层参考模型-数据链路层
查看>>
poj 1155
查看>>
JS-cookie封装
查看>>