Руководство по допиливанию для новичка- от новичка

Автор el guahiro, июля 26, 2015, 20:02:01

« предыдущая - следующая »

el guahiro

октября 29, 2021, 02:40:34 #1800 Последнее редактирование: октября 29, 2021, 02:42:28 от el guahiro
Do not allow the power manager to control the power of the display
Этим летом меня постигла небольшая неприятность: при открытии крышки не просыпался дисплей, на нажатия разных кнопок он не реагировал. приходилось выключать и включать ноутбук.
Было лето, было не до того, чтоб решить эту досадную мелочь.
Сегодня я задумался и пришёл к выводу, что:
1. Настроек я не менял, что могло произойти? Вывод: стареет батарея на ноуте, а следовательно,
2.  что-то пытается сэкономить мне батарею, не включая дисплей.
Экономит заряд батареи в xfce менеджер питания. Идём туда.
Настраиваем параметры менеджера питания: Средняя вкладка Дисплей> Настройки питания для экрана > выключаем их  ползунком вот так:

После этого проблема решилась, дисплей при открытии крышки стал просыпаться.

Надеюсь кому-то поможет. Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

ноября 20, 2021, 17:48:04 #1801 Последнее редактирование: декабря 26, 2021, 17:29:04 от el guahiro
Поправка к ПКМ Thunar под названием "Скинуть с компа на внешний носитель", используя rsync. Я на эту тему уже писал.
Но последнее время у меня развелось много внешних носителей (в том числе экзотичная флешка с Aliexpress на 2 Tb), имена которых разные и обёртке в регулярки уже не поддаются.
Вообще, получить полный путь к смонтированной (ному) флешке или hdd или ssd можно так:
df -h| grep -n media| grep -oE '[^ ]+$'Используя это, команда  ПКМ Thunar под названием "Скинуть с компа на внешний носитель" выглядит так:
rsync -avu --delete %n  "$( df -h| grep -n media| grep -oE '[^ ]+$')"|zenity --progress --width=400 --height=100 --title="Идет синхронизация" --text "Не отключать внешний носитель!" --auto-close --pulsate; notify-send "Синхронизация закончена, можете отключить внешний носитель" ; mpv /home/user/Музыка/Звуки_уведомлений/alarm_clock_труба.mp3Условие появление: Каталоги, Маска: *
Иконка: любая
Звук : /home/user/Музыка/Звуки_уведомлений/alarm_clock_труба.mp3 - это один из моих кастомных системных звуков, у вас будет другой.

PS. Не появляюсь здесь, т.к. много работы, но зреет обзор=доклад, как оцифровать чертежи, снятые на среднебюджетный сотовый телефон "с руки". Инженерам-строителям, геологам, геодезистам, работающим  "в поле", где нет скан-центров и возможности отсканировать=перевести в цифру чертёж большого формата (вплоть до A1) это, думаю, пригодится. Пригодится и тем, кто получает фото документов, снятых на камеру и присланных в WhatsApp (только для фоток с WhatsApp нужно сначала увеличить разрешение втрое).
Для затравки, один из скриптов для "отбеливания" таких снимков, removedots.sh:
#! /bin/bash
IFS=$'\#'
for f in "$@"  ; do
#Грязный с точками - 30% и 4, почти чистый 60% и 5.
threshold=`zenity --entry --title="Порог" --text=" 30 сильно грязный, 60 чуть-чуть" --entry-text="60"`
areathreshold=`zenity --entry --title="Порог площади" --text="4 сильно грязный, 5 чуть-чуть" --entry-text="5"`
connectedcomponents=`zenity --entry --title="ХЗ что это, но можете поменять" --text="4 по умолчанию" --entry-text="4"`
convert "$f" \( +clone -threshold "$threshold"% -negate -type bilevel -define connected-components:area-threshold="$areathreshold" -define connected-components:mean-color=true -connected-components "$connectedcomponents" \) -alpha off -compose copy_opacity -composite -compose over -background white -flatten  cleaned_"$f" ; done
Чтобы скрипт работал, нужен imagemagick и zenity - устанавливаются любым доступным способом из оф. репозитория. В зависимости от замусоренности чертежа, меняем параметы, следуя рекомендации в  комментарии.

Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

xub

Приветствую!

Цитата: el guahiro от ноября 20, 2021, 17:48:04Для затравки, один из скриптов для "отбеливания" таких снимков, removedots.sh:

Неясно, это ссылка планировалась или просто название скрипта?
Цитата: el guahiro от ноября 20, 2021, 17:48:04PS. Не появляюсь здесь, т.к. много работы, но зреет обзор=доклад, как оцифровать чертежи, снятые на среднебюджетный сотовый телефон "с руки".

Что вообще даже без штатива?

А работа думаю рассосётся где-то 35-37 декабря😇 у Вас как у ответственного работника, ну а разгильдяя закончат год уже после 51-56 декабря😈!

2021 Nov 20; 10:51 AM
При ответах прошу учитывать возможную существенную разницу во времени, мой часовой пояс (GMT-4) Eastern Daylight Time...

el guahiro

Цитата: xub от ноября 20, 2021, 21:51:59А работа думаю рассосётся где-то 35-37
Иногда думаю, что не доживу до Нового Года, так работы навалилось.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

декабря 08, 2021, 00:29:34 #1804 Последнее редактирование: декабря 08, 2021, 00:32:50 от el guahiro
Есть такое неприятное явление, как битые ссылки. Например, файловый менеджер Thunar, что при обычных действиях (ПКМ>отправить на Рабочий стол или перетаскивание с зажатым Shift+Ctrl) создаёт не абсолютные симлинки, а относительные, и при перемещении исходной папки/файла куда-нибудь в другое место файловой системы, ссылка превращается в битую. У меня, конечно, имеется действие правой кнопки мыши (ПКМ) Thunar  под названием "Отправить симлинк" (я об этом ранее писал, но повторюсь).
Это ПКМ отправляет симлинк в любое место файловой системы через GUI. Лишена "родовых пятен" действия ПКМ Thunar "Отправить на рабочий стол" - при изменении родительской директории файла симлинк работает, битым не становится.
Команда:
ln -s "$(realpath %f)" "$(zenity --file-selection --directory --title="Выбери папку")"Должна быть установлена утилита zenity
Условия появления: галки ставим везде
Иконка - любая.
Ну это до конца не решает проблему, иногда и я встречаю битые ссылки (симлинки) в своей системе. Найти родительский файл/папку битого симлинка легко и просто возможно. Расскажу, как это сделать.
Если сам symlink не переименовался его имя совпадает с целевым файлом, то используя такую информацию как имя и тип файла, можно найти предполагаемый целевой файл, а также можно его открыть, если это не какой-либо исполняемый файл, а просто офисный файл или папка.
Для этого делаю два ПКМ Thunar:
ПКМ Thunar "Открыть битую ссылку" :
Открыть самый старый файл (если в файловой системе есть несколько одноименных кандидатовна целевой файл):
thunar "$(find $HOME  \! -type l -name %n -print0 | xargs -0 stat -c '%%Y %%n' | sort | head -1 | cut -c 12-)"Чтобы открыть самый новый файл, надо поменять в команде head на tail:
thunar "$(find $HOME  \! -type l -name %n -print0 | xargs -0 stat -c '%%Y %%n' | sort | tail -1 | cut -c 12-)"Бывает так, что открывать не стоит, надо просто найти, файл, на который ссылалась битая ссылка, тогда имеем
ПКМ Thunar "Найти цель битого симлинка":
zenity  --width 600 --height 100 --info --title="Найденные файлы (папки)" --text="$(find $HOME  \! -type l -name %n -print 2>/dev/null )"Через пару секунд ПКМ по битой ссылке, появится окошечко с первоначальной целью битой ссылки, и это будет не симлинк.
Чтобы работало, надо установить zenity (любым доступным способом, т.к. он есть в офиц. репозитории).
В обоих ПКМах маска файла по умолчанию - * . Галки - везде.
Иконка - любая.

Думаю, кому-то поможет. Искренне ваш, el.

PS. Редко здесь пишу, т.к. завал работы. Как всегда в последний месяц делаем годовой план.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

xub

декабря 10, 2021, 22:56:25 #1805 Последнее редактирование: декабря 10, 2021, 22:58:44 от xub
Приветствую! Неужели Вы уже всё победили и досрочно закончили год!?😇

А контора наверное отвалила такую премию, что одной семьёй не осилить, родственников на подмогу вызывать нужно!😇

Thunar'ом я пользуюсь в основном как просмотрщиком, и со ссылками, естественно приходится иметь дело.

Вот такой у меня есть flias (здесь адаптирован для возможного тестирования).

cat ~/Templates/Link21Dec10.txt #😈 команда...
QW=();QQ=$(date +%y%b%d_%H%M_%S);mkdir -p ~/Desktop/Mycop_$QQ;find `pwd` -type f,l -name "*\\$QW*"|sed "s:^:':;s:$:':"|
xargs  -I{} ln -s {} /home/fjf/Desktop/Mycop_$QQ;cd ~/Desktop/Mycop_$QQ;find . -type l -name "*" -exec
rename  's:^\.\/\.:./:;s:\.\/:./LINK_:' {} \; && cd -

Alias выглядит так:
alias poi='sed -n 1,3p ~/Templates/Link21Dec10.txt|tr -d "\n"|xsel;sleep 0.4;xdotool mousemove 960 540;xdotool click 2;xdotool key -d 250 Home;xdotool key -d 150 Right Right Right Right;echo -en "\e[20D\e[K\n"'
Из программ задействованы xdotool и xsel (можно и xclip но там команды длиннее).

Alias будучи запущенным в терминале, poi ⮞⮞ Enter выведет такую строку:



В скобках нужно ввести по каким признакам ищутся файлы , например .djvu, после чего нажать Enter.

В директории на рабочем столе в данном случае Mycop_21Dec10_1123_18 будут ссылки на все файлы .djvu в месте поиска. Можно собрать к примеру ссылки на какие-то файлы со всего диска.



Файлы в именах которых есть пробелы поддерживаются, скрытые файлы поддерживаются.

Торопился, могут быть ошибки, но должно работать.

2021 Dec 10; 11:56 AM; Oakville, ON, Canada.
При ответах прошу учитывать возможную существенную разницу во времени, мой часовой пояс (GMT-4) Eastern Daylight Time...

el guahiro

декабря 11, 2021, 15:24:11 #1806 Последнее редактирование: декабря 26, 2021, 17:32:58 от el guahiro
Цитата: xub от декабря 10, 2021, 22:56:25Неужели Вы уже всё победили и досрочно закончили год!?
Нет, работа и связанный с ней ожидаемый абсурд продолжается. Моё состояние сейчас можно визуализировать так:

Пятый раз!! Пятый раз проверяю проект! Строительные работы близятся к завершению, в проекте ошибки, окончательной сметы нет,  но объект сдадим!
Чтоб не сойти с ума, отвлекаюсь и развлекаюсь написанием новых ПКМ Thunar. Например,
ПКМ Thunar "Относительные симлинки - в абсолютные", на команду:
ln -s "$(realpath %f)" /tmp/true_%n  ; mv /tmp/true_%n . ; rm -r %n ; mv true_%n %nУсловие появления: галки везде, маска файла по умолчанию: *
Иконка любая.
Работает со всеми типами файлов и сдиректориями (папками).

И да,  настроение уже новогоднее! У нас мороз -20, снег хрустит под ногами, солнышко. Хорошо!  Всех с наступающим Новым Годом и Рождеством! Заранее. Искренне ваш, el

Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

Вытаскивал текстовую инфу (обычно это первые страницы) из проектов, чтоб написать заключение по ним, в итоге написал скрипт OCR_several_pages.sh, чтоб не распознавать 30+ листов, а только несколько первых/последних/любых из PDF файла. Такой:
#! /bin/bash
IFS=$'\#'
firtspage=`zenity --entry --title="Первая распознанная страница" --text="По умолчанию один (поставить пробел) или номер" --entry-text=" "`
lastpage=`zenity --entry --title="Последняя распознанная страница" --text="По умолчанию последняя (поставить пробел) или номер" --entry-text=" "`
for i in "$@" ; do pdfsandwich -first_page $firtspage -last_page $lastpage -lang  rus+eng -rgb -o распознаны_стр."$firtspage"-"$lastpage"_"$i" "$i"; done
Должен быть установлен pdfsandwich - есть в оф. репах xUbuntu.
Скрипт прикрутил к ПКМ Thunar на команду:
touch -r %f .1 ; OCR_several_pages.sh %n | zenity --progress --width=400 --height=100 --title="Распознаю текст в файле PDF"  --text  работаю...  --auto-close --pulsate ; touch -r .1 %f ; rm  .1 ; notify-send "Закончено!"Чтоб работало, надо установить zenity и notify-send - есть в оф. репах xUbuntu.
Условие появления: галка на Другие. Маска фала : *.pdf;*.PDF
Иконка - любая.

Держимся, скоро Новый Год. Искренне ваш, el.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

xub

Приветствую!

Ох уж этот текстовой слой😞... Я сейчас как раз смежной темой занят, касательно субтитров.

А праздники у нас можно сказать прошли, 28 уже кое-кто выбросит ёлку. Рождество католическое, главный праздник, а Новый Год второстепенный...

Жена моя и дочери в церковь ходят, мы с сыновьями нет😇, это восточная православная церковь, служба на арабском и английском ну и Рождество соответственно в начале января 6 или 7 числа где-то так...

2021 Dec 26; 07:50 PM
При ответах прошу учитывать возможную существенную разницу во времени, мой часовой пояс (GMT-4) Eastern Daylight Time...

el guahiro

Цитата: xub от декабря 27, 2021, 06:50:14А праздники у нас можно сказать прошли
Шире надо смотреть.
У меня жена финка=>католическое Рождество - празднуем
Со всей страной Новый Год - празднуем.
Православное Рождество празднуем.
Старый Новый Год - празднуем.
-------------
Ёлка стоит до февраля-марта.

Искренне Ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

января 05, 2022, 14:45:57 #1810 Последнее редактирование: января 05, 2022, 15:26:03 от el guahiro
В Thunar при копировании директории не сохраняются время изменения и права файлов. Реализовать копирование с сохранением этих параметров можно с помощью ПКМ "Скопировать с правами и временем в другое место" на команду:
rsync -avu --delete %n  "$(zenity --file-selection --directory --title="Выбери папку")" |zenity --progress --width=400 --height=100 --title="Идет синхронизация" --text "Не отключать внешний носитель!" --auto-close --pulsate; notify-send "Синхронизация закончена, можете отключить внешний носитель" ; mpv /home/user/Музыка/Звуки_уведомлений/alarm_clock_труба.mp3Должно быть установлено (любым доступным способом, есть в оф. репозитории xUbuntu) zenity и mpv. Здесь alarm_clock_труба.mp3 - это файл из моей музыкальной коллекции. У вас, скорее всего, будет другой.
Можно покороче:
rsync -avu --delete %n  "$(zenity --file-selection --directory --title="Выбери папку")" |zenity --progress --width=400 --height=100 --title="Идет синхронизация" --text "Не отключать внешний носитель!" --auto-close --pulsateДолжно быть установлено (любым доступным способом, есть в оф. репозитории) zenity.
Условие появления: Галка на "Каталоги", маска: *
Иконка: любая.

Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

Отличительной особенностью моей работы является то, что я активно произвожу контент, т.е создаю файлы и как-то их называю.
В качестве атавизма у меня на работе стоит корпоративный компьютер на Windows (парадокс, всю контору переводят на Linux, а меня нет - откладывают это на потом).
Иногда возникает необходимость сбросить какую-то папку на рабочий компьютер с Windows. Чтобы это происходило безболезненно и без каких-то ручных переименований, необходимо привести имена файлов в соответствии со стандартом имён файлов Windows.
Для этого сначала проверяю наличие неправильно поименованных файлов в папке с помощью ПКМ Thunar «Проверка недопустимых имён файлов в папке» на команду:
zenity  --width 800 --height 800 --info --title="Файлы с недопустимыми в Win именами" --text="$(find "$PWD" -name '*[<>:/\\|?*]*' -o -name '*[ \.]')"Условия появления: Галка на «Каталоги», маска фалов по умолчанию: звезда
 Иконка: любая. Я поставил иконку Windows, чтобы было понятней.
Чтобы работало, должен быть установлен zenity - из официальных репозиториев.
ПКМ Thunar для исправления имён файлов называется «Исправить имена для Windows», команда:
saniarize_for_win.sh %fУсловия появления: Галка на «Каталоги», маска фалов по умолчанию: звезда
 Иконка: любая. Я поставил иконку Windows.
Скрипт saniarize_for_win.sh такого содержания:
#!/bin/bash
IFS=$'\#'
for i in {0..20} ; do find . -maxdepth $i -mindepth $i -name '*[<>\:\\|?*]*' -o -name '*[ \.]' | rename 's/[\\?*:><|"]*|[ \.?]*$//g' ; done
Скрипт работает, используя "бутербродную" рекурсию, то есть поочередно "обходит" каждый уровень вложенности каталогов. Это необходимо для того, чтобы не получилось накладки, когда имя каталога и имя файла в нём одновременно будут переименоваться.

Уверяю вас, аналогов в сети не найдёте. Написано специально для форума xubuntu-ru.net.
С наступающим православным Рождеством! Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

xub

Приветствую!

Цитата: el guahiro от января 06, 2022, 17:44:52Отличительной особенностью моей работы является то, что я активно произвожу контент, т.е создаю файлы и как-то их называю.

Ну, я о себе такого сказать не могу, особенно в части ,,активно".😇 Да, конечно, какие-то файлы создаю...

Но мне приходится разбирать то что собирают моя жена и дочь. А это часто китайское и арабское. Сейчас под рукой оригиналов нет. Создал искусственно ,,двухэтажную" директорию и такой же файл.
Вот так это выглядит в Thunar'е :

в терминале не очевидно.

Как арабы и китайцы умудряются создавать такие файлы и директории  для меня загадка. Я создал учебные, но я же это делал специально! Ну не суть, такое бывает!

Исправляется, конечно например имеем:
tree -a
.
└── 2201_Jan06_1750_36
    ├── 2201_Jan06_1820_43
    │   ├── @ #3 $7 6 ^ && 8** \n(0)0 'ls ERT ∞™‰ §\ ".txt
    │   ├── +=▐➖✚'ls ERT ∞«»™‰ §\ " §😇 ⟶⟵ 9.txt
    │   ├── && 'ls ERT ∞™‰ §\ " js ║\012┃╬ d°÷ ,;.txt
    │   ├── ﺕﺖ 'ls ERT 129 ∞™ 周😇::宣😞王‰ §\ ".txt
    │   └── ﺡﺢ ﺤ  'ls ERT ∞™‰ ,,, 漢^字 §\ " a.txt
    └── q2201_06_\012180349_zTEMP
        ├── @ #3 $7 6 ^ && 8** \n(0)0 'ls ERT ∞™‰ §\ ".txt
        ├── +=▐➖✚'ls ERT ∞«»™‰ §\ " §😇 ⟶⟵ 9.txt
        ├── && 'ls ERT ∞™‰ §\ " js ║\012┃╬ d°÷ ,;.txt
        ├── q2201_06_180349_zTEMP
        │   ├── @ #3 $7 6 ^ && 8** (0)0 'ls ERT ∞™‰ §\ ".txt
        │   ├── +=▐➖✚'ls ERT ∞«»™‰ §\ " §😇 ⟶⟵ 9.txt
        │   ├── && 'ls ERT ∞™‰ §\ " js ║┃╬ d°÷ ,;.txt
        │   ├── q2201_06_\012182606_ki
        │   │   ├── @ #3 $7 6 ^ && 8** (0)0 'ls ERT ∞™‰ §\ ".txt
        │   │   ├── +=▐➖✚'ls ERT ∞«»™‰ §\ " §😇 ⟶⟵ 9.txt
        │   │   ├── && 'ls ERT ∞™‰ §\ " js ║┃╬ d°÷ ,;.txt
        │   │   ├── ﺕﺖ 'ls ERT 129 ∞™ 周😇::宣😞王‰ §\ ".txt
        │   │   └── ﺡﺢ ﺤ  'ls ERT ∞™‰ ,,, 漢^字 §\ " a.txt
        │   ├── ﺕﺖ 'ls ERT 129 ∞™ 周😇::宣😞王‰ §\ ".txt
        │   └── ﺡﺢ ﺤ  'ls ERT ∞™‰ ,,, 漢^字 §\ " a.txt
        ├── ﺕﺖ 'ls ERT 129 ∞™ 周😇::宣😞王‰ §\ ".txt
        └── ﺡﺢ ﺤ  'ls ERT ∞™‰ ,,, 漢^字 §\ " a.txt

5 directories, 20 files
↓↓↓                  /home/fjf/Webcam/zTEMP
Linux такое выдерживает!

Чтобы это было на что-то похоже. Сначала нужно убрать файлы и директории с переносом строки т.е. с ,,\n".

find . -depth -type d -exec rename 's|\n|_|g' '{}' \;
find . -depth -type f -exec rename 's|\n|_|g' '{}' \;
Можно переименовать все файлы на месте, но не всегда получается, если особо издевательские имена.
Поэтому лучше скопировать все файлы в одну директорию и присвоить им некий идентификатор.
Идентификатор для того, если файлы с одинаковыми именами были в разных директориях.
QQ=(/tmp/$(date +%H%M%S)_cp);mkdir $QQ;find . -type f -iname "**" -exec bash \
-c 'cp "$0" "`echo $0|sed -r "s:(.*)/:\1/$(date +%s%4N)∑¢∑_:;s:(.*)/.{8}:\1\/:"`"' \
{} \; 2>/dev/null;sleep 5;find . -type f -iname "*∑¢∑*" -exec mv -t $QQ  {} \; 2>/dev/null
Получим в итоге список файлов в соответствующей директории:
074828∑¢∑_ﺡﺢ ﺤ 'ls ERT ∞™‰ ,,, 漢^字 §\ " a.txt
074916∑¢∑_&& 'ls ERT ∞™‰ §\ " js ║_┃╬ d°÷ ,;.txt
075005∑¢∑_@ #3 $7 6 ^ && 8** \n(0)0 'ls ERT ∞™‰ §\ ".txt
-'-'-'-'-... ... ... ... ... ... ... ... ...-'-'-'-'-
076215∑¢∑_+=▐➖✚'ls ERT ∞«»™‰ §\ " §😇 ⟶⟵ 9.txt
076286∑¢∑_&& 'ls ERT ∞™‰ §\ " js ║┃╬ d°÷ ,;.txt

Вот это ,,074828∑¢∑_" идентификатор "∑¢∑_" это может быть любое, например слово кириллицей ,,СлОвО".

Ну и окончательно:
find .  -type f -exec bash -c 'mv "$0" "`echo \"$0\"|sed "s:[^A-Za-zа-яА-Я0-9_/.]:_:g;s:_\{1,\}:_:g"`"' {} \;
Получится вот так:
074828_ls_ERT_™_a.txt
074916_ls_ERT_™_js_d_.txt
-'-'-'-'-... ... ... ... ... ... ... ... ...-'-'-'-'-
075005_3_7_6_8_n_0_0_ls_ERT_™_.txt
075094_ls_ERT_129_™_.txt
Относительно ,," это проблема sed'а, должен удаляться. В какой-то последней версии всё нормально с sed'ом...
Если нужно оставить две точки ❰.tar.gz положим❱ чуть другая последняя команда будет.

В общем это всё для тяжёлых случаев. Например разгребание чужих архивов, или вообще каких-то  «файловых помоек».

2022 Jan 06; 10:09 PM
При ответах прошу учитывать возможную существенную разницу во времени, мой часовой пояс (GMT-4) Eastern Daylight Time...

el guahiro

января 08, 2022, 13:55:53 #1813 Последнее редактирование: января 08, 2022, 13:57:44 от el guahiro
Цитата: xub от января 07, 2022, 09:09:46find .  -type f -exec bash -c 'mv "$0" "`echo \"$0\"|sed "s:[^A-Za-zа-яА-Я0-9_/.]:_:g;s:_\{1,\}:_:g"`"' {} \;
Приветствую. Есть несколько вопросов=предложений:
1. Думаю, надо ввести "бутербродную" рекурсию в find. Если внутри папки (директории) с "неправильным" именем находится файл(ы) с "неправильным" именем - команда не сработает; #проверял
2. В список "дозволенного sed, думаю, неплохо добавить пробел, т.к. при размере при большом количестве файлов директорий find "захлебнётся" (скажет, что "too many arguments" или что-нибудь типа этого); # не проверял, но опыт подобных ошибок есть
3. Я бы не запутывал новичков использованием ":" вместо "/" в sed;  #хотя, допускаю (надеюсь), что читатели сего форума маны по основным утилитам всё же курят.
4. У меня что-то не сработало с каталогами (может версия sed???)

Искрнне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

При большой вложенности директорий, порядка 10 уровней, при длинных именах файлов - пути получаются абсолютно нечитаемые. К тому же динные имена файлов "не влезают" в окно файлового менеджера Thunar в режиме нескольких окон/вкладок, расположенных рядом.
Для сокращения имён файлов сочинился скрипт под названием shorten_filenames_recursively.sh, такого содержания (часть 1 скрипта, разбиваю из-за превышнения максимальной длины):
#!/bin/bash
#by el guahiro, GPLv3
IFS=$'\#'
for f in "$@" ; do
[ -f "$f" ] && rename 's/\([^\)]\)//gi' "$f" ; rename "s/\.PDF/\.pdf/gi" "$f" ; rename "s/\.DOCX/\.docx/gi" "$f" ; rename "s/\.DOC/\.doc/gi" "$f" ; rename "s/\.XLS/\.xls/gi" "$f" ; rename "s/\.XLSX/\.xlsx/gi" "$f" ; rename "s/\s{2}/ /gi" "$f" ; rename 's/Письмо «/e-mail /gi' "$f" ; rename "s/ _|ООО |[{]|[}]|[(]|[)]| Стро. Комп.|Для рассмотр. Правдина И.Ю. |Горьковс О назнач.|-- Яндекс.Почта| ---- |--|Янд| екс.Почта|конец резолюции |Для работы. |Без темы|ЕАСД|Широков |ОАО |хода |Хабр|ович//gi" "$f" ; rename "s/Тех. номер|Тех. номер_/тн /gi" "$f" ; rename "s/рабочей группы|рабочая группа/РГ/gi" "$f" ; rename "s/участке/уч-ке/gi" "$f" ; rename "s/ажирских|асной|асного|асных|асность/./gi" "$f" ; rename "s/ [.]|овлению/./gi" "$f" ; rename "s/январь |января /01./gi" "$f" ; rename "s/февраль |февраля /02./gi" "$f" ; rename "s/март |марта /03./gi" "$f" ; rename "s/апрель |апреля /04./gi" "$f" ; rename "s/май |мая /05./gi" "$f" ; rename "s/июнь |июня /06./gi" "$f" ; rename "s/июль |июля /07./gi" "$f" ; rename "s/август |августа /08./gi" "$f" ; rename "s/сентябрь |сентября /09./gi" "$f" ; rename "s/октябрь |октября /10./gi" "$f" ; rename "s/ноябрь |ноября /11./gi" "$f" ; rename "s/декабрь |декабря /12./gi" "$f" ; rename "s/ г. / /gi" "$f" ; rename "s/в срок /до /gi" "$f" ; rename "s/к ИСХ/исх/gi" "$f" ; rename "s/к исх/исх/gi" "$f" ; rename "s/изменений/изм-ний/gi" "$f" ; rename "s/инвестиционным программам/инвестпрограммам/gi" "$f" ; rename "s/ТЕХНИЧЕСКИЕ УСЛОВИЯ/ТУ/gi" "$f" ; rename "s/инвестиционной программе/инвестпрограмме/gi" "$f" ; rename "s/документации/док-ции/gi" "$f" ; rename "s/железнодорожных|железнодорожный|железнодорожные|железнодорожного|железнодорожной/жд/gi" "$f" ; rename "s/инвестиционной /инвест/gi" ./* "$f" ; rename 's/|«|»|"|,|№|Fwd|поручение|Поручение|Яндекс.Почта|:|//gi' "$f" ; rename 's/ -- / /gi' "$f" ; rename "s/\s{2}/ /gi" "$f" ; rename "s/Горьковской региональной дирекции железнодорожных вокзалов/ГРДЖВ/gi" "$f" ; rename "s/[(]|[)]//gi" "$f" ; rename "s/одных |одного |ержден |ановлением |ановление |инистрации |ативный |ании |олу |оль |Отправка |иантам |отовки |оянию |аться|ении |амент |амента |онной |онная |ерческие |аботки |аментом |ойству |иков |ициях |арной |орий |ория |ории |ижнего |иция |авка |авки |уемом |уратуру |осам |ействия |отрении |ально |ентов |овах |осу |оительной |авлены |отовьте |ектированной |ерного |остранение |елений |ений|остранением |ектированная |ортную |атура |атуры |отовке |ователя |ионера |орта |орт |одок |отовить |антии |ованную |одимо |орма |уникаций |ества |имого |енно |ивает |ерных |аменте |ениях |ении |итории |ытия |ожно |анции |анция |авским |авскими |укции |адскими |ажними |азскими |асно |азы |азам |айскими |ённым |уемым |енениями |альними |альскими |ивов |анними |анскими |ованной |ившим |ивший |ействие |арскими |атскими |ейскими |ельними |одимого |вами |ельскими |енними |ованиях |ования |енскими |ентальними |ерскими |ескими |иальними |ийскими |инскими |аботке |ионними |ирскими |аммы |ительними |ическими |ними |ованними |овскими |ельно |исью |одскими |ольскими |орскими |скими |еской |ской |ческими |авского |адского |ажного |азского |айского |ального |альского |анного |анского |арского |атского |ейского |ельного |ельского |енного |енского |ентального |ерского |еского |иального |огоского |инского |ионного |ирского |ительного |ического |ного |ованного |овского |одского |ольского |орского |ского |ской |асти |ческого |адским |ажным |азским |айским |альным |альским |анным |анским |арским |атским |ейским |ельным |ельским |енным |енским |ентальным |ерским |еским |иальным |ийским |инским |ионным |ирским |ительным |ельной |ическим |ным |ованным |овским |одским |ольским |орским |ским |ском |ческим |авская |адская |ажная |азская |айская |альная |альская |анная |анская |арская |атская |ейская |ельная |ельская |енная |енская |ентальная |ерская |еская |иальная |ийская |инская |ионная |ирская |овом |ительная |ическая |ная |ованная |овская |одская |ольская |орская |ская |ской |ческая |авских |адских |ажных |азских |айских |адки |альных |альских |анных |анских |арских |атских |ейских |ельных |ельских |енных |енских |ентальных |ерских |еских |иальных |ийских |инских |ионных |ирских |ительных |ических |урных |ованных |овских |одских |ольских |орских |ских |скох |ческих |авский |адский |ажный |азский |айский |альный |альский |анный |анский |арский |атский |ейский |ельный |ельский |енный |енский |ентальный |ерский |еский |иальный |ийский |инский |ионный |ирский |ительный |ический |ованный |овский |одский |ольский |орский |ский |ской |ческий |ения |альникам |ить |атам |итарным |ативном |одства |еры |укция |укцию |ований |овить |иалы |овывающие |ени |ойство |озкам |имости |обности |ельство |ельства |ионеров |ики |ители |ала |онов |ормах |аризации |ации |иятия |ору |иятий |юдения |ормы |ика |овка |арами |отать |овку |афии |ание |аниям |ация |ых |ическое |ические |ования |изма |аний |арно |ортная |ортной |ядке|елей |ованию |ому |олю |амма |екса |ального |ике |одственным |иятия |анию |ане |овья |ению |ости |овании |емного |амме |ания |ионную |ионная |иалам |ионном |ацию |оде |ивание |ода |ение |ения |ающих |овое |остей |ное |овке|ора |ый |ости |ского |вной |ые |оянии |овать |иятиям |емы |яция |атель |ылки |ельн[а-я] |ение |авлении |авление |ование |арный |ая |ение |уре /. /gi" "$f" ; rename "s/одных[.]|уктуры[.]|орте[.]|орту[.]|ядке[.]|ельства[.]|измом[.]|елей[.]|ому[.]|уратура |уратуры |уратура[.]|уратуры[.]|амме[.]|олю[.]|амма[.]|ости[.]|ией[.]|иалам[.]|ионном[.]|ания[.]|ивание[.]|ества[.]|ода[.]|ение[.]|ения[.]|ающих[.]|овое[.]|остей[.]|ное[.]|ора[.]|ый[.]|ости[.]|ского[.]|вной[.]|ые[.]|оянии[.]|овать[.]|ика[.]|атель[.]|ылки[.]|ельная[.]|ение[.]|ытия[.]|ении[.]|ование[.]|арный[.]|ая[.]|ении[.]/./gi" "$f" ; rename "s/Александра|Алёна|Алеся|Алина|Алиса|Алла|Альбина|Аля|Амалия|Анастасия|Ангелина|Анжела|Анна|Арина|Аврора|Агата|Аделина|Аида|Бажена (Божена)|Белла (Бэлла)|Богдана|Валентина|Валерия|Варвара|Вера|Вероника|Виктория,Виталия|Владислава|Дарья|Диана|Дина|Доминика|Дарина|Ева|Евгения|Екатерина|Елена|Елизавета|Есения|Жанна|Зоя|Злата|Инна|Ирина|Изабелла|Камилла|Карина|Каролина|Катерина|Кира|Клавдия|Клара|Кристина|Ксения|Лариса|Лилия|Лина|Лолита|Любовь|Лидия,Лада|Лана|Марина|Мария|Марта|Марьяна|Мила|Милана|Мирослава|Майя|Маргарита|Марианна|Мия|Надежда|Наталия|Наталья|Ника|Нина|Нелли|Оксана|Олеся|Ольга|Полина|Регина|Рената|Руслана|Светлана|Снежана|Соня|София (Софья)|Станислава|Стелла|Стефания|Татьяна|Теона|Тина|Ульяна|Флора|Элина|Элла|Эльвина|Эльвира|Эмилия|Эмма|Эвелина|Элеонора|Юлия|Юлианна|Ярослава|Александр|Андрей|Алексей|Артемий|Арсений|Артём|Анатолий|Антон|Арсен|Артур|Альберт|Адель|Айдар|Амир|Богдан|Борис|Василий|Валерий|Виталий|Всеволод|Вадим|Виктор|Вячеслав|Владислав|Георгий|Герман|Григорий|Гордей|Глеб|Дмитрий|Давид|Демид|Денис|Данила|Даниил|Данил|Дамир|Даниэль,Егор|Евгений|Елисей|Захар|Илья|Игнат|Иван|Игорь|Ильдар|Кирилл|Константин|Леонид|Лев|Лука|Максим|Михаил|Марк|Макар|Матвей|Мирон|Мирослав|Марат|Марсель|Николай|Назар|Никита|Олег|Одиссей|Платон|Петр|Павел|Роберт|Роман|Родион|Ростислав|Радмир|Руслан|Ринат|Рамиль|Рустам|Степан|Семен|Савелий|Сергей|Савва|Станислав|Святослав|Святогор|Самир|Тимофей|Тихон|Тимур|Тамерлан|Федор|Филипп|Эдуард|Эмиль|Юрий|Ярослав|Яромир|Александровна|Андреевна|Алексеевна|Артемьевна|Арсеньевна|Артёмовна|Анатольевна|Антоновна|Арсеновна|Артуровна|Альбертовна|Аделевна|Айдаровна|Амировна|Богдановна|Борисовна|Васильевна|Валерьевна|Витальевна|Владовна|Владимировна|Всеволодовна|Вадимовна|Викторовна|Вячеславовна|Владиславовна|Георгьевна|Германовна|Григорьевна|Гордеевна|Глебовна|Дмитрьевна|Давидовна|Демидовна|Денисовна|Данилаовна|Данииловна|Даниловна|Дамировна|Даниэль,Егоровна|Евгеньевна|Елисеевна|Захаровна|Ильяовна|Игнатовна|Ивановна|Игоревна|Ильдаровна|Кирилловна|Константиновна|Леонидовна|Левовна|Лукаовна|Максимовна|Михайловна|Марковна|Макаровна|Матвеевна|Мироновна|Мирославовна|Маратовна|Марселевна|Николаевна|Назаровна|Никитаовна|Олеговна|Одиссеевна|Платоновна|Петровна|Павловна|Робертовна|Романовна|Родионовна|Ростиславовна|Радмировна|Руслановна|Ринатовна|Рамилевна|Рустамовна|Степановна|Семеновна| Савельевна|Сергеевна|Савваовна|Станиславовна|Святославовна|Святогоровна|Самировна|Тимофеевна|Тихоновна|Тимуровна|Тамерлановна|Федоровна|Филипповна|Эдуардовна|Эмилевна|Юрьевна|Ярославовна|Яромировна|Яновна|Александрович|Андреевич|Алексеевич|Артемьевич|Арсеньевич|Артёмович|Анатольевич|Антонович|Арсенович|Артурович|Альбертович|Аделевич|Айдарович|Амирович|Богданович|Борисович|Васильевич|Валерьевич|Витальевич|Владович|Владимирович|Всеволодович|Вадимович|Викторович|Вячеславович|Владиславович|Георгиевич|Германович|Григорьевич|Гордеевич|Глебович|Дмитрьевич|Давидович|Демидович|Денисович|Данилович|Даниилович|Данилович|Дамирович|Даниэлевич|Егорович|Евгеньевич|Елисеевич|Захарович|Ильич|Игнатович|Иванович|Игоревич|Ильдарович|Кириллович|Константинович|Леонидович|Львович|Лукич|Максимович|Михайлович|Маркович|Макарович|Матвеевич|Миронович|Мирославович|Маратович|Марселевич|Николаевич|Назарович|Никитович|Олегович|Одиссеевич|Платонович|Петрович|Павелович|Робертович|Романович|Родионович|Ростиславович|Радмирович|Русланович|Ринатович|Рамилевич|Рустамович|Степанович|Семенович| Савельевич|Сергеевич|Саввович|Станиславович|Святославович|Святогорович|Самирович|Тимофеевич|Тихонович|Тимурович|Тамерланович|Федорович|Филиппович|Эдуардович|Эмилевич|Юрьевич|Ярославович|Яромирович|Янович|Александра[.]|Алёна[.]|Алеся[.]|Алина[.]|Алиса[.]|Алла[.]|Альбина[.]|Аля[.]|Амалия[.]|Анастасия[.]|Ангелина[.]|Анжела[.]|Анна[.]|Арина[.]|Аврора[.]|Агата[.]|Аделина[.]|Аида[.]|Бажена (Божена)[.]|Белла (Бэлла)[.]|Богдана[.]|Валентина[.]|Валерия[.]|Варвара[.]|Вера[.]|Вероника[.]|Виктория,Виталия[.]|Владислава[.]|Дарья[.]|Диана[.]|Дина[.]|Доминика[.]|Дарина[.]|Ева[.]|Евгения[.]|Екатерина[.]|Елена[.]|Елизавета[.]|Есения[.]|Жанна[.]|Зоя[.]|Злата[.]|Инна[.]|Ирина[.]|Изабелла[.]|Камилла[.]|Карина[.]|Каролина[.]|Катерина[.]|Кира[.]|Клавдия[.]|Клара[.]|Кристина[.]|Ксения[.]|Лариса[.]|Лилия[.]|Лина[.]|Лолита[.]|Любовь[.]|Лидия,Лада[.]|Лана[.]|Марина[.]|Мария[.]|Марта[.]|Марьяна[.]|Мила[.]|Милана[.]|Мирослава[.]|Майя[.]|Маргарита[.]|Марианна[.]|Мия[.]|Надежда[.]|Наталия[.]|Наталья[.]|Ника[.]|Нина[.]|Нелли[.]|Оксана[.]|Олеся[.]|Ольга[.]|Полина[.]|Регина[.]|Рената[.]|Руслана[.]|Светлана[.]|Снежана[.]|Соня[.]|София (Софья)[.]|Станислава[.]|Стелла[.]|Стефания[.]|Татьяна[.]|Теона[.]|Тина[.]|Ульяна[.]|Флора[.]|Элина[.]|Элла[.]|Эльвина[.]|Эльвира[.]|Эмилия[.]|Эмма[.]|Эвелина[.]|Элеонора[.]|Юлия[.]|Юлианна[.]|Ярослава[.]|Александр[.]|Андрей[.]|Алексей[.]|Артемий[.]|Арсений[.]|Артём[.]|Анатолий[.]|Антон[.]|Арсен[.]|Артур[.]|Альберт[.]|Адель[.]|Айдар[.]|Амир[.]|Богдан[.]|Борис[.]|Василий[.]|Валерий[.]|Виталий[.]|Всеволод[.]|Вадим[.]|Виктор[.]|Вячеслав[.]|Владислав[.]|Георгий[.]|Герман[.]|Григорий[.]|Гордей[.]|Глеб[.]|Дмитрий[.]|Давид[.]|Демид[.]|Денис[.]|Данила[.]|Даниил[.]|Данил[.]|Дамир[.]|Даниэль,Егор[.]|Евгений[.]|Елисей[.]|Захар[.]|Илья[.]|Игнат[.]|Иван[.]|Игорь[.]|Ильдар[.]|Кирилл[.]|Константин[.]|Леонид[.]|Лев[.]|Лука[.]|Максим[.]|Михаил[.]|Марк[.]|Макар[.]|Матвей[.]|Мирон[.]|Мирослав[.]|Марат[.]|Марсель[.]|Николай[.]|Назар[.]|Никита[.]|Олег[.]|Одиссей[.]|Платон[.]|Петр[.]|Павел[.]|Роберт[.]|Роман[.]|Родион[.]|Ростислав[.]|Радмир[.]|Руслан[.]|Ринат[.]|Рамиль[.]|Рустам[.]|Степан[.]|Семен[.]|Савелий[.]|Сергей[.]|Савва[.]|Станислав[.]|Святослав[.]|Святогор[.]|Самир[.]|Тимофей[.]|Тихон[.]|Тимур[.]|Тамерлан[.]|Федор[.]|Филипп[.]|Эдуард[.]|Эмиль[.]|Юрий[.]|Ярослав[.]|Яромир[.]|Александровна[.]|Андреевна[.]|Алексеевна[.]|Артемьевна[.]|Арсеньевна[.]|Артёмовна[.]|Анатольевна[.]|Антоновна[.]|Арсеновна[.]|Артуровна[.]|Альбертовна[.]|Аделевна[.]|Айдаровна[.]|Амировна[.]|Богдановна[.]|Борисовна[.]|Васильевна[.]|Валерьевна[.]|Витальевна[.]|Владовна[.]|Владимировна[.]|Всеволодовна[.]|Вадимовна[.]|Викторовна[.]|Вячеславовна[.]|Владиславовна[.]|Георгьевна[.]|Германовна[.]|Григорьевна[.]|Гордеевна[.]|Глебовна[.]|Дмитрьевна[.]|Давидовна[.]|Демидовна[.]|Денисовна[.]|Данилаовна[.]|Данииловна[.]|Даниловна[.]|Дамировна[.]|Даниэль,Егоровна[.]|Евгеньевна[.]|Елисеевна[.]|Захаровна[.]|Ильяовна[.]|Игнатовна[.]|Ивановна[.]|Игоревна[.]|Ильдаровна[.]|Кирилловна[.]|Константиновна[.]|Леонидовна[.]|Левовна[.]|Лукаовна[.]|Максимовна[.]|Михайловна[.]|Марковна[.]|Макаровна[.]|Матвеевна[.]|Мироновна[.]|Мирославовна[.]|Маратовна[.]|Марселевна[.]|Николаевна[.]|Назаровна[.]|Никитаовна[.]|Олеговна[.]|Одиссеевна[.]|Платоновна[.]|Петровна[.]|Павловна[.]|Робертовна[.]|Романовна[.]|Родионовна[.]|Ростиславовна[.]|Радмировна[.]|Руслановна[.]|Ринатовна[.]|Рамилевна[.]|Рустамовна[.]|Степановна[.]|Семеновна[.]| Савельевна[.]|Сергеевна[.]|Савваовна[.]|Станиславовна[.]|Святославовна[.]|Святогоровна[.]|Самировна[.]|Тимофеевна[.]|Тихоновна[.]|Тимуровна[.]|Тамерлановна[.]|Федоровна[.]|Филипповна[.]|Эдуардовна[.]|Эмилевна[.]|Юрьевна[.]|Ярославовна[.]|Яромировна[.]|Яновна[.]|Александрович[.]|Андреевич[.]|Алексеевич[.]|Артемьевич[.]|Арсеньевич[.]|Артёмович[.]|Анатольевич[.]|Антонович[.]|Арсенович[.]|Артурович[.]|Альбертович[.]|Аделевич[.]|Айдарович[.]|Амирович[.]|Богданович[.]|Борисович[.]|Васильевич[.]|Валерьевич[.]|Витальевич[.]|Владович[.]|Владимирович[.]|Всеволодович[.]|Вадимович[.]|Викторович[.]|Вячеславович[.]|Владиславович[.]|Георгиевич[.]|Германович[.]|Григорьевич[.]|Гордеевич[.]|Глебович[.]|Дмитрьевич[.]|Давидович[.]|Демидович[.]|Денисович[.]|Данилович[.]|Даниилович[.]|Данилович[.]|Дамирович[.]|Даниэлевич[.]|Егорович[.]|Евгеньевич[.]|Елисеевич[.]|Захарович[.]|Ильич[.]|Игнатович[.]|Иванович[.]|Игоревич[.]|Ильдарович[.]|Кириллович[.]|Константинович[.]|Леонидович[.]|Львович[.]|Лукич[.]|Максимович[.]|Михайлович[.]|Маркович[.]|Макарович[.]|Матвеевич[.]|Миронович[.]|Мирославович[.]|Маратович[.]|Марселевич[.]|Николаевич[.]|Назарович[.]|Никитович[.]|Олегович[.]|Одиссеевич[.]|Платонович[.]|Петрович[.]|Павелович[.]|Робертович[.]|Романович[.]|Родионович[.]|Ростиславович[.]|Радмирович[.]|Русланович[.]|Ринатович[.]|Рамилевич[.]|Рустамович[.]|Степанович[.]|Семенович[.]| Савельевич[.]|Сергеевич[.]|Саввович[.]|Станиславович[.]|Святославович[.]|Святогорович[.]|Самирович[.]|Тимофеевич[.]|Тихонович[.]|Тимурович[.]|Тамерланович[.]|Федорович[.]|Филиппович[.]|Эдуардович[.]|Эмилевич[.]|Юрьевич[.]|Ярославович[.]|Яромирович[.]|Янович[.]//gi" "$f" ; rename "s/к исх|к Исх/исх/gi" "$f" ; rename "s/ | / /gi" "$f" ; rename "s/вокзал |вокзале |вокзалы |вокзалов|вокзалам /вкз. /gi" "$f" ; rename "s/инвестиционной программы/инвестпрогр./gi" "$f" ; rename "s/ждв/вокз./gi" "$f" ; rename "s/_ На исполн. Правдина И.Ю.//gi" "$f" ; rename "s/Система/Сист./gi" "$f" ; rename "s/ .ов//gi" "$f" ; rename "s/Система визуального информирования пассажиров/СВИП./gi" "$f" ; rename "s/пассажиров/пасс./gi" "$f" ; rename "s/овна |ович |ова| Геннадьевна//gi" "$f" ; rename "s/электро/эл./gi" "$f"
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions