首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件中的Grep word,然后复制该文件。

问文件中的Grep word,然后复制该文件。
EN

Unix & Linux用户
提问于 2016-07-20 00:41:19
回答 3查看 36.8K关注 0票数 10

我有一个文件集合( *.zip、*.txt、*.tar.gz、*.doc、...etc )。这些文件驻留在路径中。我想找到所有的文件( *.txt),然后只复制包含特定单词的文本文件(例如LINUX/UNIX)。

我运行了以下命令:

代码语言:javascript
复制
find . -name "*.txt" | grep 'LINUX/UNIX'

这个命令能够找到所有的文本文件,然后"grep“只列出了包含'LINUX/UNIX‘的文本文件,从而过滤了生成的文本文件。

如何将这些最终文件(即包含‘LINUX/UNIX’的文本文件)复制到所选择的特定路径?

我试着应用xargs

代码语言:javascript
复制
find . -name "*.txt" | grep 'LINUX/UNIX' | xargs cp <to a path>

但这不起作用

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2016-07-20 00:59:11

尝试:

代码语言:javascript
复制
grep -rl --null --include '*.txt' LINUX/UNIX . | xargs -0r cp -t /path/to/dest

因为这个命令使用NUL分离,所以对于所有文件名都是安全的,包括那些包含空格、制表符甚至换行符的文件名。

以上所述要求GNU cp。对于MacOS/FreeBSD,请尝试:

代码语言:javascript
复制
grep -rl --null --include '*.txt' LINUX/UNIX . | xargs -0 sh -c 'cp "$@" /path/to/dest' sh

它的工作原理:

  1. grep选项和参数
    • -r告诉grep递归地搜索目录结构。(在FreeBSD上,-r将跟随符号链接进入目录。无论是OS/X还是最新版本的GNU grep都不是这样。)
    • --include '*.txt'告诉grep只返回名称与*.txt匹配的文件(包括隐藏的文件,如.foo.txt或.txt)。
    • -l告诉grep只返回匹配文件的名称,而不是返回匹配本身。
    • --null告诉grep使用NUL字符来分隔文件名。(--null由grep在GNU/Linux、MacOS和FreeBSD下支持,但不支持OpenBSD。)
    • LINUX/UNIX告诉grep只查找其内容包括regex LINUX/UNIX的文件。
    • .在当前目录中搜索。您可以在最新版本的GNU grep中省略它,但是需要将一个--选项终止符传递给cp,以防止以-开头的文件名。

  2. xargs选项和参数
    • -0告诉xargs期待以NUL分隔的输入。
    • -r告诉xargs,除非找到至少一个文件,否则不要运行该命令。( BSD或OSX都不需要此选项,并且与OSX的xargs不兼容。)
    • cp -t /path/to/dest将目录复制到目标目录。(-t需要GNU cp。)
票数 23
EN

Unix & Linux用户

发布于 2016-07-20 01:43:46

更可移植(POSIX功能仅限于):

代码语言:javascript
复制
find . -type f -name '*.txt' -exec grep -q LINUX/UNIX {} \; -exec cp {} /path/to/dest \;
票数 14
EN

Unix & Linux用户

发布于 2019-01-09 22:08:22

我不知道为什么原来的字符串不起作用。下面的命令对我有用。

查找/ -name (filename*) AC.26 grep‘(filename.extention)’xargs cp -t .

在我的例子中,filename*是具有不同文件类型(txt、zip等)的同名文件的集合。我执行grep只查找filename.txt并将其复制到我的目标目录(当前为./)。

票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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