Рейтинг:2

Сортировать файлы по имени, содержащему числовые значения

флаг ma

У меня есть такие файлы в моей системе -

-rw-r--r-- 1 abc abcadm 14852497 23 июля 01:11 ABCD_72_3_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14853145 23 июля 01:11 ABCD_72_1_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14839699 23 июля 01:11 ABCD_72_2_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14842673 23 июля 01:11 ABCD_72_5_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14843811 23 июля 01:11 ABCD_72_4_20210722_163502.csv

Я хочу отсортировать эти файлы, чтобы напечатать только имя файла и с сортировкой, как показано ниже:

ABCD_72_1_20210722_163502.csv
ABCD_72_2_20210722_163502.csv
ABCD_72_3_20210722_163502.csv
ABCD_72_4_20210722_163502.csv
ABCD_72_5_20210722_163502.csv

Я использую приведенную ниже команду для сортировки в порядке возрастания и печати только имени, но список не сортируется.

лс -л | ABCD_72_[0-9]*_20210722_163502* | awk '{напечатать $9}' | Сортировать

Пожалуйста, предложите мне, где я ошибаюсь, или любую альтернативу этому?

Рейтинг:2
флаг cn

Во-первых, не анализируйте вывод лс. Мы можем изменить ответ на другой вопрос немного, чтобы сделать его нерекурсивным, а затем найти ./ -maxdepth 1 -printf "%f\n", и вы хотите, чтобы он был отсортирован, поэтому передайте его в Сортировать. Последняя команда

$ find ./ -maxdepth 1 -printf "%f\n" | Сортировать

Как указал @Rinzwind, если вы хотите численно отсортировать (поэтому 2 мог прийти раньше 12), Добавлять --числовая сортировка до конца команды, делающей это.

найти ./ -maxdepth 1 -printf "%f\n" | сортировка --числовая сортировка
bac0n avatar
флаг cn
Это прерывается на *новой строке*, может выполняться `-printf %f\0 | сортировать -zn | xargs -0 -n 1`
cocomac avatar
флаг cn
@ bac0n Тогда либо отредактируйте мой ответ, либо опубликуйте свой собственный. Я не учел новые строки, потому что зачем кому-то ставить прямую линию в имени файла?!?
Рейтинг:0
флаг cn

Вы считали просто

лс -в -1

Это также может быть естественно использовано со спецификацией файла, такой как:

ls -v -1 ABCD*

или же

ls -v -1 A*.csv
Рейтинг:0
флаг hr

Если вы переключитесь на зш, вы можете использовать его числовой квалификатор glob:

   n устанавливает параметр NUMERIC_GLOB_SORT для текущего шаблона

(видеть Отборочные турниры под ГЕНЕРАЦИЯ ИМЕНИ ФАЙЛА часть мужчина zshexpn).

Бывший.

 % печать -rC1 ABCD_*.csv(n)
ABCD_72_1_20210722_163502.csv
ABCD_72_2_20210722_163502.csv
ABCD_72_3_20210722_163502.csv
ABCD_72_4_20210722_163502.csv
ABCD_72_5_20210722_163502.csv

или (в обратном порядке)

 % печать -rC1 ABCD_*.csv(nOn)
ABCD_72_5_20210722_163502.csv
ABCD_72_4_20210722_163502.csv
ABCD_72_3_20210722_163502.csv
ABCD_72_2_20210722_163502.csv
ABCD_72_1_20210722_163502.csv
bac0n avatar
флаг cn
На самом деле очень быстро.
Рейтинг:-1
флаг cn

Изменение вашей собственной команды должно выполнить эту работу:

лс -л | awk '{печать $NF}' | сортировать -nk3
cocomac avatar
флаг cn
Это не работает с каталогами, в которых есть пробелы. Например, если я создам каталог с именем `test dir` (с `mkdir test\ dir`) и запущу вашу команду, она напечатает `test`, но не `test dir`. Пример строки каталога с ошибкой `drwxr-xr-x 2 ubuntu ubuntu 4096 7 октября 09:53 'test dir'`.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.