欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

Linux使用shell脚本批量拷贝文件

发布时间:2024/1/8 linux 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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脚本批量拷贝文件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。