现存一个大文件夹A,要将某些指定文件复制到B下,要复制的目录在一个txt下保存。
#/bin/bash
mypath=/03001627/
cmpath=/cm
cat all.txt |while read line
do
filepath=${mypath}${line}
#echo $filepath
if [ -d $filepath ];then
cp -r $filepath $cmpath
#echo "exists!"
else
echo $line"no exists!"
fi
done
其中:mypath为源文件夹A(已简化,可能需要绝对路径),cmpath为目标目录。
cat按行读入txt,循环处理$line。
filepath=${mypath}${line} 为字符串拼接。
if [ -d $filepath ];then 为判断文件夹是否存在,注意[]的内容的前后一定要有空格,不然会不识别 -d。
cp -r $filepath $cmpath 为复制文件夹,加上 -r 可以递归复制。
附参考:
1. 读文件
http://www.cnblogs.com/alex-blog/p/3900896.html
2. 判断目录
https://blog.csdn.net/yifeng4321/article/details/70232436
https://blog.csdn.net/uselym/article/details/48718335
3. 字符串拼接
https://blog.csdn.net/meidiya123/article/details/78060154
4. 复制文件夹
https://zhidao.baidu.com/question/27877332.html
190116更新:
在windows下用python保存了一个新的包含文件名的txt,使用了open file write('\n')的方式写文件,拷贝到Linux下无法找到文件。后来发现txt的结束符用的是CR LF,怀疑Linux只认LF,将CR也作为文件名,因此在notepad中进行了替换,于是成功。
附相关资料: