对两个驱动器中的 unix 路径名文件进行排序

对两个驱动器中的 unix 路径名文件进行排序

我有一个包含两个目录的路径名的文件。我想按文件名对它们进行排序,而不考虑父目录。

文字如下:

/mnt/samsung/a/b/c
/mnt/samsung/d/e/f
...
/mnt/wd/a/b/c
/mnt/wd/d/e/f

我想排序为

/mnt/samsung/a/b/c
/mnt/wd/a/b/c
/mnt/samsung/d/e/f
/mnt/wd/d/e/f

我正在尝试这样做:

 sort -t / -k3  

但它不起作用。

我也尝试过:

  sort -t "/" -k3 
  sort -t "/" -k2 
  sort -t / -k2

他们都没有工作。

什么能给予我想要的东西?

答案1

$ sort -t '/' -k 6 file
/mnt/samsung/a/b/c
/mnt/wd/a/b/c
/mnt/samsung/d/e/f
/mnt/wd/d/e/f

对于给定的路径,路径末尾的文件名是/每行的第六个分隔字段(第一个字段为零长度)。

--debug与 GNU 一起使用sort,它会输出

$ sort --debug -t '/' -k 6 file
sort: text ordering performed using simple byte comparison
/mnt/samsung/a/b/c
                 _
__________________
/mnt/wd/a/b/c
            _
_____________
/mnt/samsung/d/e/f
                 _
__________________
/mnt/wd/d/e/f
            _
_____________

...表明它正在使用最终路径组件作为排序键。

也可能相关(取决于实际的任务是):

相关内容