zoukankan      html  css  js  c++  java
  • find和cp连用的方法

    关于 find 和 cp 连用

    提起find 就得说下它的好基友 xargs

    xargs 是解决有些命令不能用
    “|” 传递结果如下题:

    把 /bata 目录下,以“.txt” 结尾的普通文件,拷贝到/grk下

    看到这个题我们会想到先把 /bata 下以 .txt 结尾的普通文件查找出来
    #find /data/ -type f
    -name “*.txt”

    然后用“|”传递给cp 最后命令就是

    find /data/ -type f -name

    “*.txt” | cp /grk

    乍一看没什么毛病,我们来执行一下

    在这里插入图片描述

    好吧报错,那我们加上 -t -f 指定并强制试试
    在这里插入图片描述

    还是错的在这里插入图片描述

    好吧这是因为find 命令输出的结果是无法被 “|”
    传递的,或者说 find 命令输出的结果被“|”传递后无法被“|”之后的 cp 捕获,这个时候就用到了 xargs 。 它的作用是捕获一个“|”前命令的输出,然后传递给下一个命令,这样的话上题的命令就变成了

    #find /data/ -type f -name
    “*.txt” |xargs cp -t /grk

    这里的-t参数是指定目标目录不可省略

    来我们执行一下

    在这里插入图片描述

    成功! 在这里插入图片描述

    xargs 有一个参数 -i 可以把捕获的结果放入{}中,感觉这样更符合我们常用的语法,上题命令应该这样写:

    find /data/ -type f -name

    “*.txt” | xargs -i cp {} /grk/

    执行一下:
    在这里插入图片描述

    我们再来试一下第二种方法 用 $ 存放( )里命令执行的命令结果,对于上题我们的命令写出来应该是这样:

    cp $(find /data/ -type f -name

    “*.txt”) /grk

    执行
    在这里插入图片描述
    在这里插入图片描述

    个人一直用这个因为感觉好记

    另外还有一种方法
    # find /data/ -type f -name"*.txt" -exec cp {} /grk/ ;
    来我们试试
    在这里插入图片描述

    用exec捕获也是很常见的方法

    那关于find和cp就介绍到这里了

    图片里的水印可以忽略,那是我的csdn账号地址

  • 相关阅读:
    线性表
    文件IO其四 图片显示
    文件IO其三 目录操作
    文件IO其二 文件IO
    文件IO其一 标准IO
    字符串处理函数
    复杂类型及编译相关
    linux内存分析
    构建根文件系统3-完善根文件系统
    构建根文件系统3-构建最小根文件系统
  • 原文地址:https://www.cnblogs.com/BrotherCat/p/14159490.html
Copyright © 2011-2022 走看看