文本处理-如何对具有不同目录中重复文件名的find的输出进行唯一排序?

WashichawbachaW

我想对find命令的输出进行唯一排序,在任何目录中都没有重复的文件名。

find /path/to/first_directory/* /path/to/second_directory/* /path/to/third_directory/* -mtime -1 -name "filename_pattern*"

示例输出:

/path/to/first_directory/sample_file1_2017Dec25.dat
/path/to/first_directory/sample_file2_2017Nov01.dat
/path/to/first_directory/sample_file3_2017Oct08.dat
/path/to/first_directory/archive/sample_file1_2017Dec25.dat.Z
/path/to/first_directory/archive/sample_file2_2017Nov01.dat.Z
/path/to/second_directory/sample_file4_2017Sep11.dat
/path/to/second_directory/sample_file5_2017Oct05.dat
/path/to/third_directory/sample_file1_2017Dec25.dat
/path/to/third_directory/sample_file2_2017Nov01.dat
/path/to/third_directory/sample_file3_2017Oct08.dat
/path/to/third_directory/sample_file4_2017Sep11.dat
/path/to/third_directory/sample_file5_2017Oct05.dat
/path/to/third_directory/sample_file6_2017July04.dat
/path/to/third_directory/sample_file6_2017June12.dat
/path/to/third_directory/sample_file7_2017May01.dat

从输出中,你可以看到,在重复的文件名/first_directory/,并/first_directory/archive/还从所有文件/first_directory/*/second_directory/*也内/third_directory/*这意味着/third_directory/*是所有文件的存档目录中发现的/first_directory/*/second_directory/*,但也有只能在被找到的文件/third_directory/*(检查sample_file6sample_file7

所有我想要打印的文件从始发/first_directory//first_directory/archive//second_directory//third_directory/这个顺序不存在重复,也通过他们的日期排序。

所需的输出:

/path/to/first_directory/sample_file1_2017Dec25.dat
/path/to/first_directory/sample_file2_2017Nov01.dat
/path/to/first_directory/sample_file3_2017Oct08.dat
/path/to/second_directory/sample_file4_2017Sep11.dat
/path/to/second_directory/sample_file5_2017Oct05.dat
/path/to/third_directory/sample_file6_2017July04.dat
/path/to/third_directory/sample_file6_2017June12.dat
/path/to/third_directory/sample_file7_2017May01.dat
约翰1024

如果find命令的输出保存在名为的文件中filelist,请尝试:

$ awk -F/ '{f=$NF; sub(/\.Z$/,"",f)} !a[f]++' filelist
/path/to/first_directory/sample_file1_2017Dec25.dat
/path/to/first_directory/sample_file2_2017Nov01.dat
/path/to/first_directory/sample_file3_2017Oct08.dat
/path/to/second_directory/sample_file4_2017Sep11.dat
/path/to/second_directory/sample_file5_2017Oct05.dat
/path/to/third_directory/sample_file6_2017July04.dat
/path/to/third_directory/sample_file6_2017June12.dat
/path/to/third_directory/sample_file7_2017May01.dat

如果要执行相同的操作而不创建文件,请执行以下操作:

find /path/to/first_directory/* /path/to/second_directory/* /path/to/third_directory/* -mtime -1 -name "filename_pattern*" | awk -F/ '{f=$NF; sub(/\.Z$/,"",f)} !a[f]++'

或者,您更喜欢将命令分布在多行中,请使用:

find /path/to/first_directory/* /path/to/second_directory/* \
  /path/to/third_directory/* -mtime -1 -name "filename_pattern*" |
    awk -F/ '{f=$NF; sub(/\.Z$/,"",f)} !a[f]++'

我们将其添加\到第一行末尾的位置,因为那是bash的行连续字符。因为第二行以结尾|,所以不需要行继续符。

怎么运行的

首先,find按照优先级顺序命令中列出目录很重要我知道您已经做到了。

  1. -F/

    这告诉awk/用作字段分隔符。这意味着文件名将是最后一个字段$NF

  2. f=$NF; sub(/\.Z$/,"",f)

    这会将文件名分配给变量f,然后.Z从中删除最后一个f如果存在)。

  3. !a[f]++'

    如果f以前没有看到过,请打印此行。

更新1:删除其他扩展

根据评论,.Z不是唯一需要删除的扩展名。可能有其他的扩展.dat.edi,并.dat.bak应与简单地更换.dat在这种情况下:

awk -F/ '{f=$NF; sub(/\.dat.*/,".dat",f)} !a[f]++' filelist

更新2:显示按时间戳排序的文件:

awk -F/ '{f=$NF; sub(/\.dat.*/,".dat",f)} !a[f]++' filelist | xargs -d'\n' -r ls -t

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

文本处理批处理文件登录脚本

来自分类Dev

文本处理批处理文件登录脚本

来自分类Dev

文本处理恰当地输出文件

来自分类Dev

当包含“#”时,文本处理的输出令人惊讶

来自分类Dev

使用sed或AWK进行文本处理

来自分类Dev

用PHP进行文本处理

来自分类Dev

歌曲文件列表的模式匹配和文本处理

来自分类Dev

如何加速scalaz流文本处理?

来自分类Dev

如何加速scalaz流文本处理?

来自分类Dev

文本处理-如何在所有行中输出与模式匹配的文件

来自分类Dev

如何使用原始文本处理在内容可编辑div中制作粗体文本

来自分类Dev

程序员将如何处理此文本处理任务?

来自分类Dev

文本处理:如何按日期(由字符串分隔)对列表进行排序

来自分类Dev

如何对不同的文本处理命令进行基准测试并找出最快的?

来自分类Dev

文本处理-如何从文件中顺序获取多个模式

来自分类Dev

文本处理-从ibnetdiscover输出构建slurmtopology.conf文件

来自分类Dev

Python:两个文件之间逐字进行文本处理

来自分类Dev

通过使用 AWK 或脚本进行文本处理来管理大文件

来自分类Dev

RapidMiner文本处理:如何将ngram写入文件

来自分类Dev

我需要一些有关SRT字幕文本处理的想法

来自分类Dev

Xlsxwriter:是否可以在单元格上进行东亚语言垂直文本处理?

来自分类Dev

仅针对从X行到Y行的条件进行文本处理

来自分类Dev

Xlsxwriter:是否可以在单元格上进行东亚语言垂直文本处理?

来自分类Dev

是否有Caffe完成的非视觉示例(例如文本处理)?

来自分类Dev

文本处理-如何获得模式A的匹配行,直到首次出现模式B的匹配行?

来自分类Dev

使用 string 删除括号、文本处理逗号和字符串中的逗号

来自分类Dev

在awk中的两个模式之间进行文本处理,以提供选择性的唯一输出

来自分类Dev

如何捕获文件头,然后对原始文件进行进一步的文本处理?

来自分类Dev

在bash中的变量上使用sed进行文本处理未提供预期的(修改的)输出?

Related 相关文章

  1. 1

    文本处理批处理文件登录脚本

  2. 2

    文本处理批处理文件登录脚本

  3. 3

    文本处理恰当地输出文件

  4. 4

    当包含“#”时,文本处理的输出令人惊讶

  5. 5

    使用sed或AWK进行文本处理

  6. 6

    用PHP进行文本处理

  7. 7

    歌曲文件列表的模式匹配和文本处理

  8. 8

    如何加速scalaz流文本处理?

  9. 9

    如何加速scalaz流文本处理?

  10. 10

    文本处理-如何在所有行中输出与模式匹配的文件

  11. 11

    如何使用原始文本处理在内容可编辑div中制作粗体文本

  12. 12

    程序员将如何处理此文本处理任务?

  13. 13

    文本处理:如何按日期(由字符串分隔)对列表进行排序

  14. 14

    如何对不同的文本处理命令进行基准测试并找出最快的?

  15. 15

    文本处理-如何从文件中顺序获取多个模式

  16. 16

    文本处理-从ibnetdiscover输出构建slurmtopology.conf文件

  17. 17

    Python:两个文件之间逐字进行文本处理

  18. 18

    通过使用 AWK 或脚本进行文本处理来管理大文件

  19. 19

    RapidMiner文本处理:如何将ngram写入文件

  20. 20

    我需要一些有关SRT字幕文本处理的想法

  21. 21

    Xlsxwriter:是否可以在单元格上进行东亚语言垂直文本处理?

  22. 22

    仅针对从X行到Y行的条件进行文本处理

  23. 23

    Xlsxwriter:是否可以在单元格上进行东亚语言垂直文本处理?

  24. 24

    是否有Caffe完成的非视觉示例(例如文本处理)?

  25. 25

    文本处理-如何获得模式A的匹配行,直到首次出现模式B的匹配行?

  26. 26

    使用 string 删除括号、文本处理逗号和字符串中的逗号

  27. 27

    在awk中的两个模式之间进行文本处理,以提供选择性的唯一输出

  28. 28

    如何捕获文件头,然后对原始文件进行进一步的文本处理?

  29. 29

    在bash中的变量上使用sed进行文本处理未提供预期的(修改的)输出?

热门标签

归档