| 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
|