![对两个驱动器中的 unix 路径名文件进行排序](https://linux22.com/image/164434/%E5%AF%B9%E4%B8%A4%E4%B8%AA%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%AD%E7%9A%84%20unix%20%E8%B7%AF%E5%BE%84%E5%90%8D%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F.png)
我有一个包含两个目录的路径名的文件。我想按文件名对它们进行排序,而不考虑父目录。
文字如下:
/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
_
_____________
...表明它正在使用最终路径组件作为排序键。
也可能相关(取决于实际的任务是):