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


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

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

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

Оффлайн Magi

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

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

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

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

Онлайн qpdb

  • Активист
  • *
  • Сообщений: 508
  • xUbuntu 20.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

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

Онлайн qpdb

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

Оффлайн Magi

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
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

  • Администратор
  • Старожил
  • *
  • Сообщений: 5935
  • Vamos a Bailar
    • Просмотр профиля
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")"' \;
ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн takefive

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

Онлайн qpdb

  • Активист
  • *
  • Сообщений: 508
  • xUbuntu 20.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

  • Автор темы
  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
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

  • Активист
  • *
  • Сообщений: 508
  • xUbuntu 20.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

  • Активист
  • *
  • Сообщений: 508
  • xUbuntu 20.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”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

 

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