如何在单个目录中查找子目录中的文件并按文件名对它们进行排序?

解开

使用进行正常查找的结果find . ! -path "./build*" -name "*.txt"

./tool/001-sub.txt
./tool/000-main.txt
./zo/001-int.txt
./zo/id/002-and.txt
./as/002-mod.txt

以及何时排序sort -n

./as/002-mod.txt
./tool/000-main.txt
./tool/001-sub.txt
./zo/001-int.txt
./zo/id/002-and.txt

但是所需的输出是:

./tool/000-main.txt
./zo/001-int.txt
./tool/001-sub.txt
./zo/id/002-and.txt
./as/002-mod.txt

这意味着输出仅基于文件名排序,但是文件夹信息应作为输出的一部分进行维护。

编辑:使示例更加复杂,因为子目录结构可能包含多个层次。

肖恩·高夫(Shawn J.Goff)

您需要按最后一个字段排序(考虑/为字段分隔符)。不幸的是,我想不出一个可以在字段数变化时执行此操作的工具(如果只能sort -k取负值)。

为了解决这个问题,您必须做一个decorate-sort-unecorate。也就是说,将文件名放在开头,然后是字段分隔符,然后进行排序,然后删除第一列和字段分隔符。

find . ! -path "./build*" -name "*.txt" |\
    awk -vFS=/ -vOFS=/ '{ print $NF,$0 }' |\
    sort -n -t / |\
    cut -f2- -d/

awk命令说字段分隔符 FS设置为/; 这会影响它读取字段的方式。输出字段分隔符 OFS也被设置为/; 这会影响其打印记录的方式。下一条语句表示打印最后一列(NF是记录中的字段数,因此它也恰好是最后一个字段的索引)以及整个记录($0是整个记录);它将使用它们之间的OFS打印它们。然后sort编辑该列表,将其/视为字段分隔符-由于我们在记录中首先拥有文件名,因此它将以此排序。然后cut仅打印到最后的字段2,再次将其/视为字段分隔符。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在单个目录中查找子目录中的文件并按文件名对它们进行排序?

来自分类Dev

如何查找所有目录和子目录的文件总和(单独)并按大小对它们进行排序

来自分类Dev

如何更改子目录中的文件名

来自分类Dev

“查找”或“ grep”文件名以匹配目录和子目录中的模式

来自分类Dev

如何在忽略文件名中的空格的同时遍历子目录并执行操作

来自分类Dev

在子目录中查找文件

来自分类Dev

查找与文件名匹配的子目录

来自分类Dev

如何在目录(包括子目录)中查找最新文件?

来自分类Dev

如何在父目录linux的子目录中查找和复制文件

来自分类Dev

如何遍历子目录中的一组文件并对它们进行操作

来自分类Dev

如何从所有子目录中获取特定的文件名?

来自分类Dev

如何正确匹配子目录中的文件名?

来自分类Dev

仅列出bash中目录和子目录中的文件名

来自分类Dev

如何根据Windows OS中目录的最新更新文件或子目录按日期对目录进行排序

来自分类Dev

如何删除子目录中的文件

来自分类Dev

忽略根目录和子目录中的相同文件名

来自分类Dev

更改父目录和子目录中的文件名

来自分类Dev

列出FTP目录及其子目录中的文件名

来自分类Dev

查找目录及其子目录中的所有文件

来自分类Dev

子目录中的文件?

来自分类Dev

如何在CLion中编译子目录文件?

来自分类Dev

如何在Git的子目录中包含排除文件?

来自分类Dev

如何在所有子目录中查找文件并将其复制?

来自分类Dev

如何在 Makefile 的子目录中递归查找源文件?

来自分类Dev

创建子目录并根据文件名中的日期按日期组织文件

来自分类Dev

将所有文件移动到文件名开头的子目录中

来自分类Dev

将所有文件移动到以部分文件名命名的子目录中

来自分类Dev

在Linux中将子目录中的文件名写入CSV文件

来自分类Dev

将递增值写入子目录中与文件名匹配的所有文件

Related 相关文章

  1. 1

    如何在单个目录中查找子目录中的文件并按文件名对它们进行排序?

  2. 2

    如何查找所有目录和子目录的文件总和(单独)并按大小对它们进行排序

  3. 3

    如何更改子目录中的文件名

  4. 4

    “查找”或“ grep”文件名以匹配目录和子目录中的模式

  5. 5

    如何在忽略文件名中的空格的同时遍历子目录并执行操作

  6. 6

    在子目录中查找文件

  7. 7

    查找与文件名匹配的子目录

  8. 8

    如何在目录(包括子目录)中查找最新文件?

  9. 9

    如何在父目录linux的子目录中查找和复制文件

  10. 10

    如何遍历子目录中的一组文件并对它们进行操作

  11. 11

    如何从所有子目录中获取特定的文件名?

  12. 12

    如何正确匹配子目录中的文件名?

  13. 13

    仅列出bash中目录和子目录中的文件名

  14. 14

    如何根据Windows OS中目录的最新更新文件或子目录按日期对目录进行排序

  15. 15

    如何删除子目录中的文件

  16. 16

    忽略根目录和子目录中的相同文件名

  17. 17

    更改父目录和子目录中的文件名

  18. 18

    列出FTP目录及其子目录中的文件名

  19. 19

    查找目录及其子目录中的所有文件

  20. 20

    子目录中的文件?

  21. 21

    如何在CLion中编译子目录文件?

  22. 22

    如何在Git的子目录中包含排除文件?

  23. 23

    如何在所有子目录中查找文件并将其复制?

  24. 24

    如何在 Makefile 的子目录中递归查找源文件?

  25. 25

    创建子目录并根据文件名中的日期按日期组织文件

  26. 26

    将所有文件移动到文件名开头的子目录中

  27. 27

    将所有文件移动到以部分文件名命名的子目录中

  28. 28

    在Linux中将子目录中的文件名写入CSV文件

  29. 29

    将递增值写入子目录中与文件名匹配的所有文件

热门标签

归档