zoukankan      html  css  js  c++  java
  • Linux文件拷贝(6)

    本篇介绍文件拷贝操作,主要讲两个命令:

    命令对应英文作用
    tree[目录名] tree 以树状图列出文件目录结构
    cp 源文件 目标文件 copy 复制文件或者目录

    tree

    tree命令可以将一个目录结构以树状图的形式展示出来,便于我们了解目录层级关系。在进行文件操作前,这个命令有时很有用。

    在这之前,需要注意的是,你的Linux环境可能没有这个命令,比如我的centos服务器环境就没有,这时你可以自己安装这个命令,输入以下命令:

    yum install tree

    直接输入tree命令可以查看当前所在目录的层级关系:

    //在a目录下输入
    tree
    
    
    //结果
    .
    └── b
        └── c
            └── 123.txt

    也可以指定目录名,比如回到a目录上层,再输入命令:

    tree a
    
    //结果
    a
    └── b
        └── c
            └── 123.txt

    注意两次展示结果的区别,一个是从 . 开始,表当前目录,一个是从 a 开始,表a目录下。

    有时候一个文件夹里内容太多,如果把全部层级展示出来,结构可能太长了,这时我们只展示目录就好,需要用到选项-d,使用它就可以只展示目录。

    还是拿上面的a目录演示,我在b目录里再建一个文件:

    touch a/b/test.txt
    //这种写法是可以的

    再看一下a目录结构:

    tree a
    
    //结果
    a
    └── b
        ├── c
        │   └── 123.txt
        └── test.txt

    现在使用 -d 选项:

    tree -d a
    
    //结果
    a
    └── b
        └── c
            └── 123.txt

    此时发现,b目录里的文件没显示了,但是c目录里还显示了。关于这个,也可能是我的环境原因,有些命令包括之前已经提到的命令,在不同的Linux环境下可能表现有些许差异(我自己觉得),但功能都一样,自己多试试吧。

    cp

    拷贝命令也是很简单,它的结构是:

    cp 源文件路径 目标文件路径

    比如我的根目录下,有一个readme.txt文件,我想将它复制到home目录下,并重命名为test.txt。如果当前目录就是根目录,那么输入:

    cp readme.txt ~/test.txt
    //~表示home目录

    此时在home目录下,就有了test.txt文件。这时,如果你不想重命名,你可能这么写:

    cp readme.txt ~/readme.txt

    但其实,我们可以更简单点:

    cp readme.txt ~

    这样也是可以的。所以记住了,如果不想重命名复制的文件,直接写目标文件的路径就好。

    cp命令的几个选项

    cp命令的选项也有好几个,这里主要说三个:

    命令含义
    -f 对于已经存在的目标文件直接覆盖,不会提示
    -i 覆盖文件前提示
    -r 拷贝一个目录,目录下的所有文件及目录都拷贝

    看含义就知道什么意思了,先看 -f 选项,如果我们不加这个选项,然后复制一个文件名已经存在的文件:

    //  home目录下已经有readme.txt这个文件了,然后再复制一份根目录的readme.txt
    
    cp /readme.txt .

    结果:

    cp: overwrite ‘./readme.txt’?

    显然我们需要根据提示选择是否需要覆盖。那如果我们不需要提示的话,就可以使用 -f 这个选项了:

    cp -f /readme.txt .

    结果:

    cp: overwrite ‘./readme.txt’?

    what? 不是不会提示了吗,怎么还有提示?这个选项没效果?刚开始我也怀疑是我的环境原因,后来上网查询才了解到,默认cp命令是有别名(alias cp='cp -i')的,无法强制覆盖,即使你用 -f 参数也无法强制覆盖文件。此时如果想看到效果,可以临时取消cp的alias:

    unalias cp

    再输入上述复制命令就不会有提示了。不过显然在平时使用过程中,我们不建议使用-f选项,连cp默认都是使用了 -i 选项,这样做的好处是防止误操作啊,所有我们应该尽量加上 -i 选项,防止没必要的损失。

     

    如果我们想拷贝一个目录,那么必须加上 -r 这个选项,我在根目录下新建了一个test目录:

    tree test
    
    //结果
    test
    └── a
        ├── 123.txt
        └── b

    现在就在当前目录拷贝一份,并重命名为test1:

    cp test ./test1
    
    //结果
    cp: omitting directory ‘test’

    我们再加上 -f 选项:

    cp -r test ./test1

    这时没有提示了,没有提示就是最好的提示,可以看到当前目录下多了一个test1目录。

  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/wjaaron/p/8950076.html
Copyright © 2011-2022 走看看