Как изменить порядок, в котором файлы перечислены bash - PullRequest
1 голос
/ 19 февраля 2020

У меня есть несколько файлов. Когда я перечисляю их, я получаю заказ:

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

и в порядке от ячейка выше.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Вы столкнулись с этой проблемой, потому что i предшествует . в вашем порядке сортировки по умолчанию.

Используя следующее, вы можете получить ожидаемый порядок:

sort -t'.' -k 1,1

Это определяет . - это разделитель полей, и мы должны рассматривать только первое поле (часть перед расширением) для порядка сортировки. Сейчас мы сравниваем frame0001 с frame0001i0002, и самый короткий будет напечатан первым.

1 голос
/ 19 февраля 2020

ls также может сделать это с опцией -v

$ ls -vw1 *png
frame0001.png
frame0001i0002.png
frame0002.png
frame0002i0003.png
frame0003.png
frame0003i0004.png
frame0004.png
frame0005.png
frame0006.png

С ls help

$ ls --help
...
  -v                         natural sort of (version) numbers within text
  -w, --width=COLS           set output width to COLS.  0 means no limit
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...