Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Удаление спецсимвола из всех имен файлов  (Прочитано 80647 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Magi

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Всем привет!

Есть много файлов в которых содержится некий спецсимвол, который ls показывает, как '$'\320'' и '$'\321''
в mc -  �   
(? в в квадратике)
"Хроническая сердечная недостаточность - (патогенез, кл'$'\320'' Юрий Степанович Малов 2014.pdf"

Как его удалить? Вернее даже, как правильно прописать?
rename -n 's/$'\320'//g' *

Нашел вроде бы его тут https://unicode-table.com/ru/FFFD/ Но как правильно в команду подставить?

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 616
  • xUbuntu 22.04
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #1 : 17 Января 2023, 16:21:38 »
По приведению имён файлов и директорий заодно в состояние когда они ❰имена❱ начнут нравиться можно не просто повесть написать, а целый роман :D!

Вот мой небольшой „рассказ”😇
find . -maxdepth 1 -type f,d,l -exec bash -c 'mv "$0" "`echo $0| sed -r "s:[^A-Za-zа-яА
-Я0-9_/.]:_:g;s:\.:∑:g;s:(.*)∑:\1\.:;s:∑:_:g;s:[_][_]*:_:g; s:_$::;s:^_:\.:; s:\.\/_:\.\/:;s:_\.:\.:;s:_tar\.gz$:.tar.gz:"`"' {} \;
разрастался без мысли по мере необходимости😞…
В вашем случае для начала пробуйте вот так:
find . -maxdepth 1 -type f -exec bash -c 'mv "$0" "`echo $0| sed -r "s:[^A-Za-zа-яА
-Я0-9_/.]:_:g"`"'

Можно составить команду с find✚remame, но я не использую, были проблемы при замене иероглифов, а также имён файлов на фарси, арабском, урду и иврите, мне показалось, что с SED надёжней…

В общем „возможности атомные😇”!

2023 Jan 17; 08:21 AM
Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5580
  • Все по палатам!
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #2 : 17 Января 2023, 16:35:34 »
Magi, откуда взяли эти файлы... может из архива неправильно распаковали, не в той кодировке.
Извините, я все еще учусь

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 616
  • xUbuntu 22.04
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #3 : 17 Января 2023, 16:40:40 »
не в той кодировке
Да, совершенно верно! Абсолютно уместный вопрос!
И парочку примеров имён целиком приведите, если содержание уместно для всеобщего обозрения!
Тогда можно будет предложить какую-то не очень громоздкую команду.
2023 Jan 17; 08:40 AM
Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн Magi

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #4 : 22 Марта 2023, 09:46:53 »
find . -maxdepth 1 -type f -exec bash -c 'mv "$0" "`echo $0| sed -r "s:[^A-Za-zа-яА
-Я0-9_/.]:_:g"`"'

find: отсутствует аргумент у «-exec»

Файлы с такими спецсимволами образуются после автоматического переименования имен файлов с электронными книгами с помощью скрипта https://github.com/na--/ebook-tools


Пользователь добавил сообщение 22 Марта 2023, 09:54:25:
Поправил команду вот так она выполняется, но ничего в именах файлов не меняет.
find . -maxdepth 1 -type f -exec bash -c 'mv "$0" "$(echo $0 | sed -r "s:[^A-Za-zа-яА-Я0-9_/.]:_:g")"' {} \;
Примеры имен.
Математические_задачи._Студенческие_олимпиады_матема�_Сергей_Сизый_2018.pdf
Моделирование_и_поддержка_сообществ_в_Интернет__препр�_В._Е._Лепский___А._Г._Рапуто_1999.pdf
« Последнее редактирование: 22 Марта 2023, 09:54:54 от Magi »

Оффлайн ALiEN175

  • Администратор
  • Старожил
  • *
  • Сообщений: 6597
  • 20% Cooler
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #5 : 22 Марта 2023, 12:21:47 »
find . -maxdepth 1 -type f -exec bash -c 'mv "{}" "$(echo {} | sed -r "s:[^A-Za-zа-яА-Я0-9_/.]:_:g")"' \;
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн takefive

  • Новичок
  • *
  • Сообщений: 40
  • harp
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #6 : 22 Марта 2023, 13:53:42 »
rename 's/�/-/' *pdf
без свинга нет музыки

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 616
  • xUbuntu 22.04
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #7 : 22 Марта 2023, 14:44:04 »
Попробовать, конечно, можно :)
↓↓↓                  /home/fjf/Desktop
l | grep txt$
qMar22_�0718_09�_AM.txt
↓↓↓                  /home/fjf/Desktop
rename -n 's:�:╳:g' *.txt
rename(qMar22_�0718_09�_AM.txt, qMar22_╳0718_09╳_AM.txt)
↓↓↓                  /home/fjf/Desktop

Но это я использовал символ „�” приведенный выше, а что будет в других случаях с похожим символом смотреть нужно :idiot2:

2023 Mar 22; 07:43 AM
Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн Magi

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #8 : 27 Марта 2023, 14:39:04 »
find . -maxdepth 1 -type f -exec bash -c 'mv "{}" "$(echo {} | sed -r "s:[^A-Za-zа-яА-Я0-9_/.]:_:g")"' \;

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

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 616
  • xUbuntu 22.04
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #9 : 27 Марта 2023, 16:03:11 »
Magi, в переименованиях сложных и запутанных файлов, например файлов с Youtube сложно обойтись одной командой, длинная получится и путанная😞…
Допустим имеются такие файлы (беспорядочный набор с Youtube):
(Нажмите, чтобы показать/скрыть)

Чтобы получить например вот такое переименование, нужно всё же несколько действий и желательно их объединить в скрипт, в итоге проще получится…
(Нажмите, чтобы показать/скрыть)

В связи с тем, что мои сообщения по неизвестным  ;) :) причинам удаляются, не буду описывать шире, если сообщение уцелеет напишу😇.

2023 Mar 27; 09:03 AM; Oakville, ON, Canada.
Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 616
  • xUbuntu 22.04
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #10 : 29 Марта 2023, 14:44:01 »
Magi, я Вас приветствую!

Произошла у меня вспышка памяти😇 и я вспомнил о существовании программы:
sudo apt install detox

Попробуйте, должно работать:
find `pwd` -maxdepth 1 -type f,d  -iname "**" -print0 | xargs -0 detox -r -v

Предполагается запуск в директории с нужными файлами. Видимые недостатки, требует предварительно транслитерации кириллических файлов, иначе кириллица исчезнет😞…

Если этот вариант Вам покажется слишком „жёстким” или даже жестоким😇 ну что ж будем транслитерировать, а потом удалять по группам символов.

Угроза удаления моих сообщений ❰я описал в письме на почту причины 😇❱ существует, так что в случае чего придётся таки общаться через почту😇!

Успехов Вам!

2023 Mar 29; 07:43 AM

Пользователь добавил сообщение 29 Марта 2023, 14:52:00:
Да, в detox -r -v „-r -v” можно не применять, „-r” вообще лишнее, это рекурсия, можно ещё „-n” это пишут для того, чтобы предварительно посмотреть. Вообще прочитайте man этой программы, я просто просмотрел…

2023 Mar 29; 07:51 AM
« Последнее редактирование: 29 Марта 2023, 14:52:00 от qpdb »
Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн Magi

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #11 : 30 Марта 2023, 14:03:21 »
detox удаляет всю киррилицу из имен файлов :(

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 616
  • xUbuntu 22.04
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #12 : 30 Марта 2023, 16:06:04 »
Magi, Приветствую!

Я же не видел ваши файлы, вернее их имена😞… Но предупреждал ↓↓↓
Видимые недостатки, требует предварительно транслитерации кириллических файлов, иначе кириллица исчезнет😞…

Транслитерация простейший выход, но она затрудняет чтение, особенно если название длинное😞… Простейший вариант будет выглядеть так:

(Нажмите, чтобы показать/скрыть)
Покажите образцы файлов (одни имена, содержание не нужно)  в текстовом виде, 5-6 штук типичных достаточно, наверное придётся таки „изваять😇” скрипт, но „ваятель😇” я весьма посредственный, но надеюсь 2-3 попытки и мы победим😇!

Здоровья и успехов!
2023 Mar 30; 09:06 AM; Oakville, ON, Canada.
Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн Magi

  • Автор темы
  • Участник
  • *
  • Сообщений: 116
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #13 : 30 Марта 2023, 16:09:26 »
Насколько я понял русские букв вообще не будет? Этот вариант не устраивает, у меня много файлов с русскими названиями, не хотелось бы их транслитерировать...

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 616
  • xUbuntu 22.04
    • Просмотр профиля
Re: Удаление спецсимвола из всех имен файлов
« Ответ #14 : 30 Марта 2023, 16:40:57 »
Magi, вполне логично, я об этом говорил выше…
не хотелось бы их транслитерировать
Прямая транслитерация достигается с использованием команды (в скрипте):
sed y/абвгґдеёзиклмнопрстуфхцшъыь№/abvggdeeziklmnoprstufxcwqyq#/ | \
sed y/АБВГҐДЕЁЗИКЛМНОПРСТУФХЦШЪЫЬ/ABVGGDEEZIKLMNOPRSTUFXCWQYQ/ | \
sed "s:є:je:g;s:ж:zh:g;s:і:ih:g;s:ї:jy:g;s:й:jj:g;s:ч:ch:g;s:щ:wh:g;s:э:eh:g;s:ю:ju:g;s:я:ja:g; \
s:Є:Je:g;s:Ж:Zh:g;s:І:Ih:g;s:Ї:Jy:g;s:Й:Jj:g;s:Ч:Ch:g;s:Щ:Wh:g;s:Э:Eh:g;s:Ю:Ju:g;s:Я:Ja:g"
Это для русского и украинского языков, можно ещё белорусский добавить, вариант произвольный без учёта традиций и стандартов.

Для обратной транслитерации нужно составить похожую команду и протестировать.

Давайте образцы имён файлов, надеюсь они не секретные😇, да будем продолжать, с молитвой😇 об успехе!

2023 Mar 30; 09:40 AM

Пользователь добавил сообщение 30 Марта 2023, 16:46:45:
Да, транслитерация, думаю, не единственный выход. И не лучший, думаю, тоже😞, громоздко как-то😞…
2023 Mar 30; 09:46 AM

Пользователь добавил сообщение 30 Марта 2023, 17:46:28:
Неужели так не работает? Вот пример с файлами с Youtube…
(Нажмите, чтобы показать/скрыть)
2023 Mar 30; 10:45 AM
« Последнее редактирование: 30 Марта 2023, 17:46:28 от qpdb »
Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

 

Страница сгенерирована за 0.086 секунд. Запросов: 25.