Порядок сортировки природы Windows Explorer

Вот как я сделал это в моем Arch linux с Gnome как DE:

#!/bin/bash

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

STATUS=$(cat /sys/class/power_supply/ACAD/online)
if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
then
    /usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
fi

Слово ACAD в STATUS = $ (cat / sys / class / power_supply / ACAD / online) будет меняться в зависимости от производителя портативного компьютера. Он используется, чтобы определить, подключен ли ваш колен к адаптеру переменного тока или нет. Вот как выглядит мой crontab:

* * * * * bash <path to script>

Не забудьте сделать скрипт исполняемым с помощью chmod u + x <путь к скрипту>

1
26.09.2018, 02:13
3 ответа

Если кто-то хочет разделить папки и файлы, как это делает Windows, вы можете сделать это:

ls -d */ -1 | sort -V
ls -p | grep -v / | sort -V
1
27.01.2020, 23:31

Сортировка по версии GNU sort (-V), по-видимому, дает такой результат:

~ printf "%s\n" "Ie5" "Ie6" "Ie4 01" 'Ie4!01' "Ie4_01" "Ie4_128" "Ie401sp2" "Ie501sp2" |
  sort -V
Ie4 01
Ie4!01
Ie4_01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2
1
27.01.2020, 23:31

Если вас не интересует порядок следования специальных символов,тогда zshквалификатор глобуса числовой сортировки становится близким:

Настройка

$ touch "Ie5" "Ie6" "Ie4 01" 'Ie4!01' "Ie4_01" "Ie4_128" "Ie401sp2" "Ie501sp2"
$ mkdir Foo Quux Ie7bar

только зш

$ print -l *(n/) *(n^/)
Foo
Ie7bar
Quux
Ie4 01
Ie4_01
Ie4!01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2

с лс

$ ls -1df *(n/) *(n^/)
Foo
Ie7bar
Quux
Ie4 01
Ie4_01
Ie4!01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2

Флаги для ls::

  • форсировать вывод в один столбец -(-1)--просто для удобства просмотра
  • не спускаться в каталоги(-d)
  • не сортировать входящий список(-fили-U)

Квалификаторы zsh glob говорят:

  • *(n/)-расширить список каталогов /, упорядоченных по номерам
  • *(n^/)-расширить список элементов, которые не являются^каталогами, упорядоченными по номерам

Я упомянул решение zsh только потому, что вы можете легче манипулировать результатами, не беспокоясь о том, чтобы заключать имена файлов в кавычки или ограничивать их нулевыми значениями. Например:

$ mine=( *(/n) *(n^/) )
$ for file in "${mine[@]}"; do print -l "$file"; done
Foo
Ie7bar
Quux
Ie4 01
Ie4_01
Ie4!01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2
$ print -l "${mine[-1]}"
Ie501sp2
0
27.01.2020, 23:31

Теги

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