Linux使用shell脚本批量拷贝文件
在日常工作中我们经常会碰到在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脚本批量拷贝文件相关推荐
- shell脚本-批量清理文件夹
shell脚本批量自动清理linux文件夹,释放磁盘空间 #!/bin/bash source /etc/profilecd /file_pathecho `date '+%Y-%m-%d %H:%M ...
- linux脚本重命名文件,shell脚本批量对文件改名(名字新旧不相关)
首先,要用到数组,请先看关于数组的基础知识 要求:把电脑中的SRR开头的文件名改为容易识别的Library_Name 电脑中的SRR文件如下: SRR文件 Run和Library_Name的对应关系如 ...
- Linux 下Shell脚本删除过期文件
在写这个shell之前先说一下,stat命令的使用方法 一.关于时间戳 每一个文件都有3中时间(称为时间戳timestamps),对这3种时间,很多时候容易混淆不清,因此 这里要说明下: Acce ...
- Linux命令+shell脚本大全:文件和目录列表
要想知道系统中有哪些文件,可以使用列表命令( ls ).本节将描述 ls 命令和可用来格式化 其输出信息的选项. 3.5.1 基本列表功能 ls 命令最基本的形式会显示当前目录下的文件和目录: $ l ...
- Linux中用shell脚本批量修改文件名
批量更改目录下所有文件的后缀名 cd到目录下 ls看一下当前文件 批量改 find ./ -name '*.smr' | while read i doecho "$i";mv $ ...
- 【内容替换】shell脚本批量替换文件内容(替换ip及其他配置文件)
0.介绍 1.替换某个文件夹下所有文件及其子文件的内容 2.主要命令:sed -i "s/111/eee/g" $1"/"$file(将文件中所有的111替换为 ...
- shell脚本批量修改文件后缀
案例 #!/bin/bash oldext="txt" newext="sh" dir=$(eval pwd) for file in $(ls $dir | ...
- Linux下shell脚本实战之批量新建用户
Linux下shell脚本实战之批量新建用户 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.使用提供的user.txt用户列表 2.批量新建us ...
- Linux的简单shell脚本中修改文件操作
Linux的简单shell脚本中修改文件操作 Linux Shell常用技巧(三) sed 八.流编辑器sed 8.1 sed简介 sed是stream editor的缩写,一种流编辑器,它一次处理一 ...
最新文章
- JAVA学习资源网站
- Jewels and Stones
- 使用java来进行分词处理
- 【bzoj 3669】[Noi2014]魔法森林
- 多线程模拟渡河 C语言 Linux
- matlab求临界稳定时的k,MATLAB自动控制原理仿真
- 产品特点概述-驰骋工作流
- OpenCV-图像处理(30、轮廓周围绘制矩形框和圆形框)
- 白帽子讲web安全读后感2
- 不采用Matlab函数,自行设计基于双线性插值的图像放大程序
- 杨森翔人日诗词;人日书法
- 数据库-订单信息表(单表)_思路清晰_设计简洁
- MySQL 面试知识点 汇总
- 基于ssm 流浪猫狗救助系统
- elasticsearch nested嵌套查询
- 华为路由器:ospf协议入门介绍
- win7连win10失败解决方法
- 2022年全球安全访问服务边缘行业分析报告
- 基于MVC的在线影票售卖系统/基于ASP.NET的电影院售票系统
- 基于HttpURLConnection 网络请求工具类的封装