我有一个包含两个目录的路径名的文件。我想按文件名对它们进行排序,而不考虑父目录。
文字如下:
/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
_
_____________
...表明它正在使用最终路径组件作为排序键。
也可能相关(取决于实际的任务是):