【问题标题】:Sort files in graphical mode using bash使用 bash 在图形模式下对文件进行排序
【发布时间】:2021-09-18 21:33:08
【问题描述】:

早上好。

我有以下文件列表:

3,09AgSec02_00 Aqui llega el 3-09.jpg
3,09AgSec02_00.jpg
3,09AgSec02_01.jpg
3,09AgSec02_02.jpg
3,09AgSec02_03.jpg
3,09AgSec02_04.jpg
3,09AgSec02_05.jpg
3,09AgSec02_06.jpg
3,09AgSec02_07.jpg
3,09AgSec02_08.jpg
3,09AgSec02_09.jpg
3,09AgSec02_0010.jpg
3,09AgSec02_11.jpg
3,09AgSec02_12.jpg
3,09AgSec02_13.jpg
3,09AgSec02_14.jpg
3,09AgSec02_15.jpg

在图形模式下我看很好,但是如果我执行 ls 我会看到如下

ls -A

3,09AgSec02_00 Aqui llega el 3-09.jpg
3,09AgSec02_00.jpg
**3,09AgSec02_0010.jpg**
3,09AgSec02_01.jpg
3,09AgSec02_02.jpg
3,09AgSec02_03.jpg
3,09AgSec02_04.jpg
3,09AgSec02_05.jpg
3,09AgSec02_06.jpg
3,09AgSec02_07.jpg
3,09AgSec02_08.jpg
3,09AgSec02_09.jpg
3,09AgSec02_11.jpg
3,09AgSec02_12.jpg
3,09AgSec02_13.jpg
3,09AgSec02_14.jpg
3,09AgSec02_15.jpg

并且为了放置好(即使我有00)我使用以下表格

ls -1v 

3,09AgSec02_00.jpg
**'3,09AgSec02_00 Aqui llega el 3-09.jpg'**
3,09AgSec02_01.jpg
3,09AgSec02_02.jpg
3,09AgSec02_03.jpg
3,09AgSec02_04.jpg
3,09AgSec02_05.jpg
3,09AgSec02_06.jpg
3,09AgSec02_07.jpg
3,09AgSec02_08.jpg
3,09AgSec02_09.jpg
*3,09AgSec02_0010.jpg*
3,09AgSec02_11.jpg
3,09AgSec02_12.jpg
3,09AgSec02_13.jpg
3,09AgSec02_14.jpg
3,09AgSec02_15.jpg

所有数字都正确排序,但其中一个给了我一个错误。 '3,09AgSec02_00 Aqui llega el 3-09.jpg'

因为在 00 和 "00 space [A-z]" 之后显示在底部。

可以这样留下吗,在图形模式下会是什么样子

'3,09AgSec02_00 Aqui llega el 3-09.jpg'
3,09AgSec02_00.jpg
3,09AgSec02_01.jpg
3,09AgSec02_02.jpg
3,09AgSec02_03.jpg
3,09AgSec02_04.jpg
3,09AgSec02_05.jpg
3,09AgSec02_06.jpg
3,09AgSec02_07.jpg
3,09AgSec02_08.jpg
3,09AgSec02_09.jpg
3,09AgSec02_0010.jpg
3,09AgSec02_11.jpg
3,09AgSec02_12.jpg
3,09AgSec02_13.jpg
3,09AgSec02_14.jpg
3,09AgSec02_15.jpg

【问题讨论】:

  • 你说的这个图形模式是什么?

标签: bash sorting user-interface terminal ls


【解决方案1】:

您可以通过使用sort -m (sort --merge) 或sort -z (sort --zero-terminated) 将其传递到sort 命令(或保存+catsort)来实现结果相同的文件列表。它会输出这个:

3,09AgSec02_00 Aqui llega el 3-09.jpg
3,09AgSec02_00.jpg
3,09AgSec02_01.jpg
3,09AgSec02_02.jpg
3,09AgSec02_03.jpg
3,09AgSec02_04.jpg
3,09AgSec02_05.jpg
3,09AgSec02_06.jpg
3,09AgSec02_07.jpg
3,09AgSec02_08.jpg
3,09AgSec02_09.jpg
3,09AgSec02_0010.jpg
3,09AgSec02_11.jpg
3,09AgSec02_12.jpg
3,09AgSec02_13.jpg
3,09AgSec02_14.jpg
3,09AgSec02_15.jpg

您的输入(作为 base64):

echo MywwOUFnU2VjMDJfMDAgQXF1aSBsbGVnYSBlbCAzLTA5LmpwZwozLDA5QWdTZWMwMl8wMC5qcGcKMywwOUFnU2VjMDJfMDEuanBnCjMsMDlBZ1NlYzAyXzAyLmpwZwozLDA5QWdTZWMwMl8wMy5qcGcKMywwOUFnU2VjMDJfMDQuanBnCjMsMDlBZ1NlYzAyXzA1LmpwZwozLDA5QWdTZWMwMl8wNi5qcGcKMywwOUFnU2VjMDJfMDcuanBnCjMsMDlBZ1NlYzAyXzA4LmpwZwozLDA5QWdTZWMwMl8wOS5qcGcKMywwOUFnU2VjMDJfMDAxMC5qcGcKMywwOUFnU2VjMDJfMTEuanBnCjMsMDlBZ1NlYzAyXzEyLmpwZwozLDA5QWdTZWMwMl8xMy5qcGcKMywwOUFnU2VjMDJfMTQuanBnCjMsMDlBZ1NlYzAyXzE1LmpwZwo= |base64 -d | sort -z

online bash shell中试过。

【讨论】:

  • 使用以下命令同样的错误:`$ ls * > aux $ cat aux |sort -m |sort -z |头 -n 15 $ 猫辅助 |排序 -V |头 -n 15 :(
  • @user1847844 抱歉,我的意思是 在那些 sort 命令之间。尽管如此,它们中的每一个都可以在在线 bash shell 中正常工作。
猜你喜欢
  • 2012-11-01
  • 2010-12-17
  • 2015-06-29
  • 1970-01-01
  • 2021-10-28
  • 2020-03-10
  • 2018-06-14
  • 2019-09-06
  • 2021-12-16
相关资源
最近更新 更多