linux - 如何将 grep 的输出通过管道传输到 cp?

标签 linux shell grep cp

我有一个有效的 grep 命令可以选择满足特定条件的文件。如何从 grep 命令中获取选定的文件并将其通过管道传输到 cp 命令中?

以下尝试在 cp 端失败:

grep -r "TWL" --exclude=*.csv* | cp ~/data/lidar/tmp-ajp2/

cp: missing destination file operand after ‘/home/ubuntu/data/lidar/tmp-ajp2/’ Try 'cp --help' for more information.


cp `grep -r "TWL" --exclude=*.csv*` ~/data/lidar/tmp-ajp2/

cp: invalid option -- '7'

最佳答案

grep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/

解释:

  • grep -l 仅输出文件名的选项
  • xargs 将文件列表从标准输入转换为命令行参数
  • cp -t 指定目标目录的选项(并避免使用占位符)

关于linux - 如何将 grep 的输出通过管道传输到 cp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33140583/

相关文章:

linux - 本地计算机上的 2 个 Postgres 服务器。如何卸载或解除关联?

java - 通过IDE(intelliJ)运行Shell脚本并接收: Windows Subsystem for Linux has no installed distributions

null - awk 空数据选项

linux - 大写的 Grep 语法

node.js - 更新后npm似乎没有更新

linux - $0 在 Redhat 和 Ubuntu 上给出不同的结果?

shell - 使用 Django shell 实例化具有外键属性的对象

regex - 使用 grep 从一行中提取多个值

Bash:非法变量名错误

python - 进程监控 - Python/Ubuntu/Linux