Раскрытие фигурных скобок с помощью `bash`

Synaptic s — крупный производитель сенсорных панелей для ноутбуков, а также название широко -используемого драйвера сенсорной панели Xorg, который возник как драйвер для сенсорных панелей Synaptics, но теперь распространяется на продукты других производителей сенсорных панелей. слишком.

Synaptic без s , однако, совершенно не связан :это графический интерфейс менеджера пакетов APT -для набора инструментов GTK (т.е. родной для рабочего стола GNOME ).

Mint 19.1, скорее всего, будет использовать более новый libinputдрайвер ввода X11 вместо специального драйвера сенсорной панели Synaptics, использовавшегося в предыдущих версиях; Ответ beginner6789 на этот вопрос или man libinputможет помочь в его настройке.

Кроме того, вы можете использовать команду xinputбез каких-либо параметров для отображения списка устройств ввода X11, а затем использовать xinput --list-props для просмотра всех настроек для него, доступных через текущий драйвер.

Прежде чем пытаться управлять настройками напрямую, обратите внимание, что среда вашего рабочего стола уже может управлять некоторыми настройками. Например, в KDE параметр «Synaptics Off» контролируется устройством ввода сенсорной панели в системных настройках KDE :. Если вы установите параметр «Отключить сенсорную панель при наборе текста», он будет управлять настройкой «Synaptics Off» нажатия клавиш были недавно обнаружены или нет.

0
02.03.2021, 21:28
1 ответ

Если вы хотите переименовать 100 файлов с помощью mv, вам нужно вызвать mv100 раз, чтобы переименовать каждый отдельный файл. Там нет никакого реального способа обойти это.

Для перебора ваших файлов в порядке номеров от file010до file1000вы можете использовать

for name in file{010..990..10} file1000
do
    # rest of code goes here
done

{010..990..10}— это расширение фигурных скобок, которое расширяется до строк 010, 020, 030и т. д. до 990с шагом 10. Каждая такая строка будет предваряться строкой file. ]. Мы добавляем file1000в конце, так как его номер не совсем соответствует шаблону (он слишком длинный на одну цифру ).

Чтобы переименовать файлы в цикле, мы можем сохранить счетчик, считая от нуля вверх. Затем новое имя файла строится как префикс file, за которым следует заполненное нулем -двузначное целое число, заданное текущим значением счетчика.

Добавляем это в цикл выше:

count=0
for name in file{010..990..10} file1000
do
    printf -v newname 'file%.2d' "$(( count++ ))"
    mv -- "$name" "$newname"
done

В качестве альтернативы, вместо расширения фигурной скобки,мы могли бы использовать арифметический цикл forвот так:

for (( i = 1; i <= 100; ++i )); do
    printf -v name    'file%.3d' "$(( i * 10 ))"
    printf -v newname 'file%.2d' "$(( i - 1 ))"

    mv -- "$name" "$newname"
done

Использование утилиты Perl renameвместоmv:

rename -n -v 's/file(\d+)/sprintf "file%.2d", ($1\/10 - 1)/e' file*

Это применяет выражение Perls///(замены )к каждому имени файла, соответствующему file*в текущем каталоге. Выражение соответствует числу после подстроки fileи использует его для вычисления нового числа имени файла (, которое делится на 10 и уменьшается на единицу ).

Удалить -nдля запуска команды «по-настоящему»(-nявляется опцией «пробного запуска» ).

Несколько более чистый вариант, который не использует /eдля оценки строки замены и который упоминает fileтолько один раз:

rename -n -v '/(file)(\d+)/; $_ = sprintf "%s%.2d", $1, ($2/10 - 1)' file*
3
18.03.2021, 22:27

Теги

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