Я решил эту проблему одним способом, создав дополнительный подкаталог в домашнем каталоге пользователя, который принадлежит ему. Сам домашний каталог по-прежнему принадлежит root.
Таким образом, пользователь может делать в своем подкаталоге все, что захочет.
Использованиеsort
:
$ ls -lghFG | sort -n -td -k2
total 0
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d1
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d2
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d3
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d4
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d5
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d6
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d7
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d8
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d9
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d10
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d11
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d12
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d13
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d14
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d15
Это будет использовать букву d
в качестве разделителя и сортировать вывод в числовом виде в поле 2, поэтому могут возникнуть проблемы, если ваши имена файлов содержат букву d
.
Чтобы удовлетворить ваше требование использовать ll
(, который является псевдонимом ), вы можете сделать (не рекомендуется:
alias ll='ls -lghFG | sort -n -td -k2'
ls
повторно -отсортирует имена файлов, которые вы ему дали (или текущую директорию, если вы )этого не сделали сами; один из способов обойти это - дать ему имена файлов отдельно:
ls -l *.d? ; ls -l *.d??
Или, поскольку у вас есть псевдоним/функция для длинного списка:
ll *.d?; ll *.d??
Я не знаю, что у вас ll
. ll
— это псевдоним для ls -l
, но это не похоже на него.
В любом случае, этот конкретный вывод может быть отсортирован в нужном вам порядке с помощью GNU sort
и его версии , применяемой к 5-му столбцу и выше:
ll | sort -bVk5
Если ll
каким-то образом является псевдонимом для ls
, а ваш ls
— это GNU ls
, то ls
также имеет сортировку версии с включенной -v
.
В оболочке zsh
можно отсортировать глобусы аналогичным образом с помощью опции numericglobsort
или квалификатора глобуса (n)
. Итак, если ваша команда ll
может получить список имен файлов в качестве аргумента и не выполняет никакой дальнейшей сортировки, вы можете выполнить (в zsh
и zsh
только):
ll *(n)