samson4747 |
|
Темы:
33
Сообщения:
534
Участник с: 23 февраля 2012
|
Будем убирать всё кроме русского и латиницы, цифр и '_' c '.', остальное заменив на '__'? Верная идея?
"If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding. —Aaron Griffin
|
brestows |
|
Темы:
24
Сообщения:
189
Участник с: 06 апреля 2013
|
так можно же скриптом в транслит перевести имена файлов потом обратно :)
kdeneur: https://github.com/brestows/kdeNeur
awesome WM 3.5 |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
Зайди в папку которую копируешь и выполни find > file.list а потом скинь file.list куда нибудь, посмотрю что можно сделать.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
samson4747 |
|
Темы:
33
Сообщения:
534
Участник с: 23 февраля 2012
|
find > file.list Спасибо! Даже можно упростить и вот так: find > file.list
"If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding. —Aaron Griffin
|
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
попробуй заюзать вот такой скриптик нашел тут http://ru.wikibooks.org/wiki/LOR-FAQ-Storage но немного подправил 1.sh #!/bin/bash # Перекодирует рекурсивно в текущем каталоге имена # файлов и каталогов в транслит. shopt -s nullglob for NAME in * do # Меняем в названии файла квадратные скобки на круглые - а то sed клинит квадратными NBR=`echo "$NAME" | tr '[' '('` NBR=`echo "$NBR" | tr ']' ')'` if [[ "$NAME" != "$NBR" ]] then mv -v -- "$NAME" "$NBR" fi # Меняем дефис в начале названия файла на символ нижнего подчёркивания - что бы file, move да и вообще # другие команды не воспринимали такие названия файлов как параметры DSH=`echo $NBR | sed "s/^-/_/g;s/ /_/g"` if [[ "$DSH" != "$NBR" ]] then mv -v -- "$NBR" "$DSH" fi TRS=`echo $DSH | sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/"` TRS=`echo $TRS | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFXCY/"` TRS=${TRS//ч/ch}; TRS=${TRS//Ч/CH} TRS=${TRS//ш/sh}; TRS=${TRS//Ш/SH} TRS=${TRS//ё/yo}; TRS=${TRS//Ё/YO} TRS=${TRS//ж/zh}; TRS=${TRS//Ж/ZH} TRS=${TRS//щ/sch}; TRS=${TRS//Щ/SСH} TRS=${TRS//э/ye}; TRS=${TRS//Э/YE} TRS=${TRS//ю/yu}; TRS=${TRS//Ю/YU} TRS=${TRS//я/ya}; TRS=${TRS//Я/YA} TRS=${TRS//ъ/\'}; TRS=${TRS//Ъ/\'} TRS=${TRS//ь/\'}; TRS=${TRS//Ь/\'} if [[ -d "$DSH" ]] then if [[ "$DSH" != "$TRS" ]] then mv -v "$DSH" "$TRS" fi cd "$TRS" sh "$0" cd .. else if [[ "$DSH" != "$TRS" ]] then mv -v "$DSH" "$TRS" fi fi done входишь в каталог в котором нужно все переименовать и запускаешь sh /полный путь к скрипту/1.sh
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
samson4747 |
|
Темы:
33
Сообщения:
534
Участник с: 23 февраля 2012
|
Запустил, ещё работает, вижу, что имена переименовываются с русского на транслит, это мы вернём обратно? Благодарю за скрипт. sh /media/bcb536f2-ef06-4838-ad5e-b48bb6960be0/0.sh Это у меня 1881 файл с левыми символами был? Просто find > file.list дал 7426 файла. Теперь буду предельно внимателен с именами.
"If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding. —Aaron Griffin
|
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
там в скрипте нужно было еще вот такой фильтр поставитьTRS=${TRS//Ъ/\'} TRS=${TRS//ь/\'}; TRS=${TRS//Ь/\'} TRS=`echo $TRS | tr -cd '\012[a-z][A-Z][0-9]._'` if [[ -d "$DSH" ]] then что бы остались символы только латиница цифры точка и пробел нужно будет тебе вставить в скрипт эту строку и еще раз запустить.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
samson4747 |
|
Темы:
33
Сообщения:
534
Участник с: 23 февраля 2012
|
Добавил фильтр и запустил sh /media/bcb536f2-ef06-4838-ad5e-b48bb6960be0/0.sh, пока ничего не происходит... ан нет, что-то начало выдавать... и на этом закончил он
"If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding. —Aaron Griffin
|
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
Ну попробуй сейчас скопировать.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
samson4747 |
|
Темы:
33
Сообщения:
534
Участник с: 23 февраля 2012
|
nafanjaЧудным образом копирует! Очень благодарен. Мы можем попробовать транслит перевести на русский? Например вот так: #!/bin/bash shopt -s nullglob for NAME in * ; do TRS=`echo $NAME | sed -e "s/tz/ц/g" -e "s/sh/ш/g" -e "s/sch/щ/g" -e "s/zh/ж/g" -e "s/ch/ч/g" -e "s/yu/ю/g" -e "s/ya/я/g" -e "s/yo/ё/g" -e "s/YO/Ё/g" -e "s/TZ/Ц/g" -e "s/SH/Ш/g" -e "s/SCH/Щ/g" -e "s/ZH/Ж/g" -e "s/CH/Ч/g" -e "s/YU/Ю/g" -e "s/YA/Я/g" -e "y/jukengzh'fyvaproldesmit'bJUKENGZH'FYVAPROLDESMIT'B/йукенгзхъфывапролдэсмитьбЙУКЕНГЗХЪФЫВАПРОЛДЭСМИТЬБ/"` if [[ `file -b "$NAME"` == directory ]]; then mv -v "$NAME" "$TRS" cd "$TRS" "$0" cd .. else mv -v "$NAME" "$TRS" fi done
"If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding. —Aaron Griffin
|