递归提取文件夹下所有叶子节点文件至指定文件夹
2016-05-17 15:29
387 查看
文件结构图:
dir1
├── a
│ ├── b
│ │ └── file1
│ └── file2
├── c
│ └── d
│ ├── e
│ │ └── file4
│ └── file3
└── file5
我们需要将其中的file1~file5提取出来放到另一个文件夹中。#!/bin/bash
#desc: get file from directory
#example: sh getfilefromdir.sh A B
INIT_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
}
checksavepath
for sfol in ${INIT_PATH}
do
getfilefromdir ${sfol}
done
运行命令:
sh getfilefromdir.sh dir1/ dir2
运行结果:
dir2
├── file1
├── file2
├── file3
├── file4
└── file5
dir1
├── a
│ ├── b
│ │ └── file1
│ └── file2
├── c
│ └── d
│ ├── e
│ │ └── file4
│ └── file3
└── file5
我们需要将其中的file1~file5提取出来放到另一个文件夹中。#!/bin/bash
#desc: get file from directory
#example: sh getfilefromdir.sh A B
INIT_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
}
checksavepath
for sfol in ${INIT_PATH}
do
getfilefromdir ${sfol}
done
运行命令:
sh getfilefromdir.sh dir1/ dir2
运行结果:
dir2
├── file1
├── file2
├── file3
├── file4
└── file5
相关文章推荐
- 用node runAction实现定时器
- java入门之main
- Android 应用私密性防护
- c源文件到执行文件的编译过程
- cacti系列之安装篇 LNMP+cacti+spine (一)
- epoll讲解--转自”知乎“
- 阅读下面类的定义,说出在测试函数中不同情况的调用产生的结果2
- Android 使保存的图片在图库中显示
- 获取进程基址
- MZ test17# NOIP模拟题 # T2 第2题 最优时间表(sche.pas/cpp) [key.DP]
- 恶意代码防范-熟悉给定工具
- 用Keras搭建, 编译和训练神经网络时,常见问题
- 新浪云的使用
- DOO-SABIN 细分正方体(2)利用半边数据结构表示(一次和两次细分)
- 使用C#的HttpWebRequest模拟登陆网站
- NYOJ 48 小明的调查作业
- 313. Super Ugly Number
- poj 1127 Jack Straws(两线相交,并查集)
- 简单的从服务器获取数据以及反序列化
- Oracle 操作中的问题