【问题标题】:How to copy files found with grep如何复制使用 grep 找到的文件
【发布时间】:2016-09-20 15:48:12
【问题描述】:

我正在运行此命令以在树目录中查找包含(借助正则表达式)“someStrings”的所有文件。

grep -lir '^beginString' ./ -exec cp -r {} /home/user/DestinationFolder \; 

它找到了这样的文件:

FOLDER
a.txt
-->SUBFOLDER
  a.txt
---->SUBFOLDER
     a.txt

我想将具有相同架构的所有文件和文件夹复制到目标文件夹,但我不知道该怎么做。复制文件和文件夹很重要,因为找到的几个文件具有相同的名称,我需要保留它。

【问题讨论】:

    标签: bash grep pipe cp


    【解决方案1】:

    试试这个:

    find . -type f -exec grep -q '^beginString' {} \; -exec cp -t /home/user/DestinationFolder {} +
    

    grep -lir '^beginString' . | xargs cp -t /home/user/DestinationFolder
    

    但如果你想保持目录结构,你可以:

    grep -lir '^beginString' . | tar -T - -c | tar -xpC /home/user/DestinationFolder
    

    或者如果像我一样,您更愿意确定您存储的文件类型(只有文件,没有符号链接),您可以:

    find . -type f -exec grep -l '^beginString' {} + | tar -T - -c |
        tar -xpC /home/user/DestinationFolder
    

    如果您的文件名可能包含 空格和/或特殊字符,请使用 null terminated stringsgrep -l 输出 (arg -Z) 传递给 @987654328 @(arg--null -T):

    find . -type f -exec grep -lZ '^beginString' {} + | tar --null  -T - -c |
        tar -xpC /home/user/DestinationFolder
    

    【讨论】:

    • 太棒了,它有效!!!我不知道怎么做,但有效!该命令制作一些备份文件,我手动删除它并且很好。朋友,谢谢!!!你救了我的命
    猜你喜欢
    • 2019-04-15
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2014-06-24
    • 1970-01-01
    相关资源
    最近更新 更多