利用shell脚本批量复制文件到给定目录

还是工作中的一堆烂事.有时候你在Linux下要导出一批文件,但是用大包命令发现Linux提示你没有权限,或者说解压的时候软件提示你权限不够.

这时候方法不外乎:

    方法一:一个一个文件的打开,然后手动复制出来,天哪!!!

   方法二:使用脚本批量复制到给定目录


我们讨论方法二.

首先,我们按照Linux的提示,或者解压软件的提示,吧那些权限不够的文件和路径给复制出来到一个文件中,比如tmpfile.txt.我的文件如下

\http\tcp\map\baidu-UD-MIB.txt
\http\tcp\tools\dbd\fkcp_fkc.c
\http\tcp\map\baidu-UD-MIB.txt
\http\tcp\tools\dbd\fkcp_fkc.c
\http\tcp\map\baidu-UD-MIB.txt
\http\tcp\tools\dbd\fkcp_fkc.c
\http\tcp\map\baidu-UD-MIB.txt
\http\tcp\tools\dbd\fkcp_fkc.c
\http\tcp\map\baidu-UD-MIB.txt
\http\tcp\tools\dbd\fkcp_fkc.c
\http\tcp\map\baidu-UD-MIB.txt
\http\tcp\tools\dbd\fkcp_fkc.c
\http\tcp\map\baidu-UD-MIB.txt
\http\tcp\tools\dbd\fkcp_fkc.c

注意:上面是windows的格式,需要把斜线换成反斜线.

把该文件放到\http路径下面.在该路径下创建脚本,比如file2copy.sh

#!/bin/bash
cat tmpfile.txt | while read line
do
        filename=`basename $line`;
        echo $filename
#       touch /home/xj/temp/$filename
        cp $line /home/xj/temp/$filename
done

第二行:读取tmpfile.txt文件,每次一行,吧读出的内容保存到line中.

do循环处理每一行line内容.首先使用basename提取没有前缀的文件名(关于basename请百度一下);

然后echo语句打印当前正在操作的文件;

cp命令将单签文件复制到给定的目录下.

完毕!


//我知道实践这个方法的人会看到输出错误,脚本是没有问题的,但是我确实有一点没说到.而且看起来一点都不难发现问题所在.请在看到输出的问题的时候想一想原因.

你可能感兴趣的:(脚本)