sort
в GNU coreutils разрешен пользовательский разделитель полей и ключ. Вы устанавливаете /
в качестве разделителя полей и сортируете по второму полю, чтобы сортировать по базовому имени, а не по всему пути.
printf "%s\n" "${filearray[@]}" | sort -t/ -k2
будет производить
dir2/0003.pdf
dir1/0010.pdf
dir3/0040.pdf
Это не работает, потому что вы пытаетесь использовать замену процесса с /bin/sh
(, очевидным из строки#!
-), которая их не поддерживает. Используйте оболочку, такую как bash
или zsh
, которая умеет выполнять подстановки процессов.
Другой способ сделать это, который может быть более надежным, состоит в том, чтобы создать свой собственный ~/.xinitrc
файл, скопировав версию системы, а затем изменить ее.