首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用命令“`xargs`”复制多个文件

使用命令“`xargs`”复制多个文件
EN

Unix & Linux用户
提问于 2018-03-28 02:04:38
回答 1查看 33K关注 0票数 16

我想将命令find搜索的文件复制到currernt目录

代码语言:javascript
复制
    # find linux books
    find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 echo
  # the result
    ../Books/LinuxCollection/Linux_TLCL-17.10.pdf ../Richard Blum, Christine Bresnahan - Linux Command Line and Shell Scripting Bible, 3rd Edition - 2015.pdf ..

使用命令“`cp”测试将文件复制到当前dir

代码语言:javascript
复制
 find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 cp .

获取错误:

代码语言:javascript
复制
    usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
           cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory

我用命令替换解决了问题

代码语言:javascript
复制
    cp $(find ~ -type f -iregex '.*linux.*\.pdf' -print0) .

如何用xargs来实现呢?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-03-28 02:09:56

正如cp错误所指出的,目标目录必须是最后一个。由于您的cp似乎没有与GNU cp's -t选项相当的名称,所以必须让xargs在cp.之间插入文件名:

代码语言:javascript
复制
find ... | xargs -0 -I _ cp _ .

其中,-I用于判断哪个字符串将被输入替换(在本例中,我使用的是_,尽管{}也是常用的)。

当然,这可以通过find本身来完成:

代码语言:javascript
复制
find ~ -type f -iregex '.*linux.*\.pdf' -exec cp {} . \;
票数 26
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/433938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档