linux find和cp 连用

(4) 2024-04-23 14:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说linux 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

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

linux find和cp 连用_https://bianchenghao6.com/blog__第1张

好吧报错,那我们加上 -t -f 指定并强制试试
linux find和cp 连用_https://bianchenghao6.com/blog__第2张

还是错的linux find和cp 连用_https://bianchenghao6.com/blog__第3张

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

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

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

来我们执行一下

linux find和cp 连用_https://bianchenghao6.com/blog__第4张

成功! linux find和cp 连用_https://bianchenghao6.com/blog__第5张

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

find /data/ -type f -name

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

执行一下:
linux find和cp 连用_https://bianchenghao6.com/blog__第6张

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

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

“*.txt”) /grk

执行
linux find和cp 连用_https://bianchenghao6.com/blog__第7张
linux find和cp 连用_https://bianchenghao6.com/blog__第8张

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

最后还有一种方法
# find /data/ -type f -name"*.txt" -exec cp {} /grk/ ;
来我们试试
linux find和cp 连用_https://bianchenghao6.com/blog__第9张

这种语法我不知道如何解释。就是知道这么用而已

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

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复