在日常工作中我们经常会碰到在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 
do
	echo "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)处理包含空格和特殊字符的文件名

  • 可以使用双引号或者单引号将拷贝文件引用起来" "或者' '
  • 可以使用转义\
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐