【问题标题】:Linux - copy files if column 5 in a file contains "V"Linux - 如果文件中的第 5 列包含“V”,则复制文件
【发布时间】:2020-01-02 16:59:30
【问题描述】:

我有许多 csv 文件(如 tmo_2019*)。在这些文件中,一些文件的第 5 列值为 V。 我想将那些第 5 列值为 V 的文件复制到特定目录 /test/V_files/。

我尝试通过以下方式提取文件名,但无法完成复制命令。

find -type f -iname "tmo*"  -exec awk -F',' '$5 == "V" {print FILENAME}'  {} \;

如何完成命令以复制这些文件的第 5 列值为 V。

提前致谢

【问题讨论】:

  • 每个文件是否只包含一行?
  • 每个文件有超过 1 行的第 5 位字段不是“V”

标签: linux shell unix sh exec


【解决方案1】:

find 的-exec 可以用作过滤器:如果执行的程序返回零,则为“真”

find -type f -iname "tmo*" \
  -exec awk -F, -v status=1 '$5 == "V" {status=0; exit} END {exit status}' {} \; \
  -exec cp -vt /test/V_files {} +

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2016-10-29
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多