如何更改 bash 列出文件的顺序
How to change the order in which files are listed by bash
我有一些文件。当我列出它们时,我得到了订单:
frame0001i0002.png
frame0001.png
frame0002i0003.png
frame0002.png
frame0003i0004.png
frame0003.png
frame0004.png
frame0005.png
frame0006.png
我原以为frame0001.png
会在frame0001i0002.png
之前,因为我需要按顺序对它们进行操作:
frame0001.png
frame0001i0002.png
frame0002.png
frame0002i0003.png
frame0003.png
frame0003i0004.png
frame0004.png
frame0005.png
frame0006.png
我是否需要重命名它们以按我想要的顺序显示?
最后我想把他们的名字改成:
frame0001.png
frame0002.png
frame0003.png
frame0004.png
frame0005.png
frame0006.png
frame0007.png
frame0008.png
frame0009.png
并按照上面单元格的顺序。
您遇到此问题是因为 i
在您的默认排序顺序中排在 .
之前。
使用以下命令可以获得预期的顺序:
sort -t'.' -k 1,1
这定义了.
是一个字段分隔符,我们应该只考虑第一个字段(扩展之前的部分)进行排序。我们现在比较 frame0001
和 frame0001i0002
,最短的将首先打印。
ls 也可以使用 -v
选项
$ ls -vw1 *png
frame0001.png
frame0001i0002.png
frame0002.png
frame0002i0003.png
frame0003.png
frame0003i0004.png
frame0004.png
frame0005.png
frame0006.png
来自ls
帮助
$ ls --help
...
-v natural sort of (version) numbers within text
-w, --width=COLS set output width to COLS. 0 means no limit
...
我有一些文件。当我列出它们时,我得到了订单:
frame0001i0002.png
frame0001.png
frame0002i0003.png
frame0002.png
frame0003i0004.png
frame0003.png
frame0004.png
frame0005.png
frame0006.png
我原以为frame0001.png
会在frame0001i0002.png
之前,因为我需要按顺序对它们进行操作:
frame0001.png
frame0001i0002.png
frame0002.png
frame0002i0003.png
frame0003.png
frame0003i0004.png
frame0004.png
frame0005.png
frame0006.png
我是否需要重命名它们以按我想要的顺序显示?
最后我想把他们的名字改成:
frame0001.png
frame0002.png
frame0003.png
frame0004.png
frame0005.png
frame0006.png
frame0007.png
frame0008.png
frame0009.png
并按照上面单元格的顺序。
您遇到此问题是因为 i
在您的默认排序顺序中排在 .
之前。
使用以下命令可以获得预期的顺序:
sort -t'.' -k 1,1
这定义了.
是一个字段分隔符,我们应该只考虑第一个字段(扩展之前的部分)进行排序。我们现在比较 frame0001
和 frame0001i0002
,最短的将首先打印。
ls 也可以使用 -v
选项
$ ls -vw1 *png
frame0001.png
frame0001i0002.png
frame0002.png
frame0002i0003.png
frame0003.png
frame0003i0004.png
frame0004.png
frame0005.png
frame0006.png
来自ls
帮助
$ ls --help
...
-v natural sort of (version) numbers within text
-w, --width=COLS set output width to COLS. 0 means no limit
...