ls cmd не показывает файлы и каталоги в нужном мне порядке

Убедитесь, что служба sshd запущена на Centos 7.

запуск службы sshd

0
15.05.2020, 09:36
2 ответа

Если вы превратите свой короткий скрипт shв скрипт zsh, вы можете попросить оболочку zshупорядочить имена в нужном вам порядке:

#!/bin/zsh

ls -p -fd -- *(om)

Здесь (om)— это квалификатор glob, который изменяет поведение предыдущего шаблона. omозначает "упорядочить по последнему -измененному -времени". Затем я вызываю ls -fdс этим списком имен, используя -f, чтобы остановить lsот изменения порядка, и -d, чтобы не отображать содержимое каталогов.

Вместо команды lsвы также можете использовать

print -rC1 -- *(Nom)

для печати списка в один столбец(-C1). -rостанавливает printот интерпретации последовательностей обратной косой черты. Nв квалификаторе glob действует так же, как nullglobв bash, то есть заставляет шаблон расширяться до нуля, если совпадения нет (, а не генерировать ошибку ).

1
28.04.2021, 23:14

Если это происходит в системе Linux, то вы стали жертвой ошибки ядра Linux.

В UNIX метки времени файла создаются с помощью функции uniquetime(), которая увеличивает доли секунды каждый раз, когда она используется.

Это дает уникальные метки времени файла для различных операций файловой системы, даже если системные часы не очень точны.

Однако в Linux tt обычно получает одну и ту же метку времени для более чем одной операции с файловой системой.

Когда временные метки равны, файлы сортируются в алфавитном порядке, и это то, что вы видите.

-1
28.04.2021, 23:14

Теги

Похожие вопросы