在日常工作中我们经常会碰到在linux下导出文件的工作,如果挨个拷贝就很麻烦也很不方便。

  • 方法一:for循环的拷贝
    这种方法适合轻量拷贝,我们把需要拷贝的文件名单独列出来,放在name.txt文件中,通过循环遍历这个文件就可以实现批量拷贝。
    注意:for 循环中会根据空格为区分字段,如果文件命中含有空格,则推荐使用while循环。
#!/usr/bin/env bash
file="name.txt"
for state in $(cat $file)
do
echo "visit beautiful $state"
done
  • 方法二:while 循环的拷贝
#!/usr/bin/env bash
echo "----copy report start--------"
cat report_name.txt | while read line
doecho "copy: ${line}"cp "/home/web_app/files/${line}" /home/report_files
done
echo "----copy report end--------"
  • 小技巧:

(1).cp [options] <source file or directory> <target file or directory>
options选项包括:

  • a 保留链接和文件属性,递归拷贝目录,相当于下面的d、p、r三个选项组合。
  • d 拷贝时保留链接。
  • f 删除已经存在目标文件而不提示。
  • i 覆盖目标文件前将给出确认提示,属交互式拷贝。
  • p 复制源文件内容后,还将把其修改时间和访问权限也复制到新文件中。
  • r 若源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。当然,目标文件必须为一个目录名。
  • l 不作拷贝,只是链接文件。
    -s 复制成符号连结文件 (symbolic link),亦即『快捷方式』档案;
    -u 若 destination 比 source 旧才更新 destination。

示例:
1、将文档 file1复制成file2,复制后名称被改file2
cp -i file1 file2
或,
cp file1 file2
2、将文档 file1复制到dir1目录下,复制后名称仍未file1
cp -i file1 dir1
或,
cp file1 dir1
3、将目录dir1复制到dir2目录下,复制结果目录被改名为dir2
cp -r dir1 dir2
4、将目录dir1下所有文件包括文件夹,都复制到dir2目录下
cp -r dir1/. dir2
常见错误:
1、提示cp: omitting directory错误
复制目录时,使用-r选项即可递归拷贝,如下:
cp -r dir1 dir2

(2)Linux中basename和dirname命令的妙用

basename和dirname命令的妙用

(3)处理包含空格和特殊字符的文件名

  • 可以使用双引号或者单引号将拷贝文件引用起来" "或者' '
  • 可以使用转义\

Linux使用shell脚本批量拷贝文件相关推荐

  1. shell脚本-批量清理文件夹

    shell脚本批量自动清理linux文件夹,释放磁盘空间 #!/bin/bash source /etc/profilecd /file_pathecho `date '+%Y-%m-%d %H:%M ...

  2. linux脚本重命名文件,shell脚本批量对文件改名(名字新旧不相关)

    首先,要用到数组,请先看关于数组的基础知识 要求:把电脑中的SRR开头的文件名改为容易识别的Library_Name 电脑中的SRR文件如下: SRR文件 Run和Library_Name的对应关系如 ...

  3. Linux 下Shell脚本删除过期文件

    在写这个shell之前先说一下,stat命令的使用方法 一.关于时间戳 每一个文件都有3中时间(称为时间戳timestamps),对这3种时间,很多时候容易混淆不清,因此 这里要说明下:   Acce ...

  4. Linux命令+shell脚本大全:文件和目录列表

    要想知道系统中有哪些文件,可以使用列表命令( ls ).本节将描述 ls 命令和可用来格式化 其输出信息的选项. 3.5.1 基本列表功能 ls 命令最基本的形式会显示当前目录下的文件和目录: $ l ...

  5. Linux中用shell脚本批量修改文件名

    批量更改目录下所有文件的后缀名 cd到目录下 ls看一下当前文件 批量改 find ./ -name '*.smr' | while read i doecho "$i";mv $ ...

  6. 【内容替换】shell脚本批量替换文件内容(替换ip及其他配置文件)

    0.介绍 1.替换某个文件夹下所有文件及其子文件的内容 2.主要命令:sed -i "s/111/eee/g" $1"/"$file(将文件中所有的111替换为 ...

  7. shell脚本批量修改文件后缀

    案例 #!/bin/bash oldext="txt" newext="sh" dir=$(eval pwd) for file in $(ls $dir | ...

  8. Linux下shell脚本实战之批量新建用户

    Linux下shell脚本实战之批量新建用户 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.使用提供的user.txt用户列表 2.批量新建us ...

  9. Linux的简单shell脚本中修改文件操作

    Linux的简单shell脚本中修改文件操作 Linux Shell常用技巧(三) sed 八.流编辑器sed 8.1 sed简介 sed是stream editor的缩写,一种流编辑器,它一次处理一 ...

最新文章

  1. JAVA学习资源网站
  2. Jewels and Stones
  3. 使用java来进行分词处理
  4. 【bzoj 3669】[Noi2014]魔法森林
  5. 多线程模拟渡河 C语言 Linux
  6. matlab求临界稳定时的k,MATLAB自动控制原理仿真
  7. 产品特点概述-驰骋工作流
  8. OpenCV-图像处理(30、轮廓周围绘制矩形框和圆形框)
  9. 白帽子讲web安全读后感2
  10. 不采用Matlab函数,自行设计基于双线性插值的图像放大程序
  11. 杨森翔人日诗词;人日书法
  12. 数据库-订单信息表(单表)_思路清晰_设计简洁
  13. MySQL 面试知识点 汇总
  14. 基于ssm 流浪猫狗救助系统
  15. elasticsearch nested嵌套查询
  16. 华为路由器:ospf协议入门介绍
  17. win7连win10失败解决方法
  18. 2022年全球安全访问服务边缘行业分析报告
  19. 基于MVC的在线影票售卖系统/基于ASP.NET的电影院售票系统
  20. 基于HttpURLConnection 网络请求工具类的封装

热门文章

  1. JSP打印九九乘法表和表格
  2. 紫光展锐发布系统级安全的高性能5G SoC移动平台T820
  3. 中国品牌亮相第六届加拿大服装纺织品采购展
  4. Spring Boot 打包分离依赖 JAR 和配置文件
  5. Freemarker 简介 及手册
  6. 移动Web富应用框架RAIS发布
  7. 基于Android的学生信息管理大作业
  8. SQL Server 2008附加mdf文件连接数据库18456错误
  9. 女孩子录取了计算机类,苏州中学小女生录取藤校康奈尔工程计算机专业!看介绍,学攻略!...
  10. vconsole 轻松实现移动端调试