LINUX.ORG.RU

История изменений

Исправление Xenius, (текущая версия) :

Спасибо, но как всё-же сделать чтобы не переносило на новую строку?

Не использовать for для итерации. У find есть параметр -exec

Как бы сделали Вы? :-)

Я бы писал на Tcl, и так чтобы заменялись только куски с #Uxxxx, и после замены проводилась проверка на корректность имени.

Исправление Xenius, :

Спасибо, но как всё-же сделать чтобы не переносило на новую строку?

Не использовать for для итерации. У find есть параметр -exec

Как бы сделали Вы? :-)

Я бы писал на Tcl, и так чтобы заменялись только куски с #Uxxxx, и после замены проводилась проверка на корректность имени.

На баше у меня так и не получается сделать как следует.

Если ты собираешься это пробовать, вначале сделай резервную копию той директории, в которой ты собираешься проводить эту операцию и желательно запускать под отдельным юзером у которого нет доступа никуда кроме рабочей копии. И если после этой команды у тебя какие-нибудь не те (или не так) файлы переименуются или удалятся, то пеняй на себя:

 find . -name '*#U[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*' ! -name '*\\*' -execdir bash -c 'echo mv -i {} `echo -e "$(echo {} | sed s/#U/\\\\\\\\u/g | grep -vF ..)"`' \;

Я не даю никаких гарантий работоспособности этой фиговины... но оно в любом случае лучше того что ты сам придумываешь.

Исправление Xenius, :

Спасибо, но как всё-же сделать чтобы не переносило на новую строку?

Не использовать for для итерации. У find есть параметр -exec

Как бы сделали Вы? :-)

Я бы писал на Tcl, и так чтобы заменялись только куски с #Uxxxx, и после замены проводилась проверка на корректность имени.

На баше у меня так и не получается сделать безопасно. Если ты собираешься это пробовать, вначале сделай резервную копию той директории, в которой ты собираешься проводить эту операцию и запускай под отдельным юзером у которого нет доступа никуда кроме рабочей копии. И если после этой команды у тебя какие-нибудь не те (или не так) файлы переименуются или удалятся, то пеняй на себя:

 find . -name '*#U[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*' ! -name '*\\*' -execdir bash -c 'echo mv -i {} `echo -e "$(echo {} | sed s/#U/\\\\\\\\u/g | grep -vF ..)"`' \;

Я не даю никаких гарантий работоспособности этой фиговины... но оно в любом случае лучше того что ты сам придумываешь.

Исправление Xenius, :

Спасибо, но как всё-же сделать чтобы не переносило на новую строку?

Не использовать for для итерации. У find есть параметр -exec

Как бы сделали Вы? :-)

Я бы писал на Tcl, и так чтобы заменялись только куски с #Uxxxx, и после замены проводилась проверка на корректность имени.

На баше у меня так и не получается сделать безопасно. Если ты собираешься это пробовать, вначале сделай резервную копию той директории, в которой ты собираешься проводить эту операцию и запускай под отдельным юзером у которого нет доступа никуда кроме рабочей копии. И если после этой команды у тебя какие-нибудь не те файлы переименуются или удалятся, то пеняй на себя:

 find . -name '*#U[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*' ! -name '*\\*' -execdir bash -c 'echo mv -i {} `echo -e "$(echo {} | sed s/#U/\\\\\\\\u/g | grep -vF ..)"`' \;

Я не даю никаких гарантий работоспособности этой фиговины... но оно в любом случае лучше того что ты сам придумываешь.

Исходная версия Xenius, :

Спасибо, но как всё-же сделать чтобы не переносило на новую строку?

Не использовать for для итерации. У find есть параметр -exec

Как бы сделали Вы? :-)

Я бы писал на Tcl, и так чтобы заменялись только куски с #Uxxxx, и после замены проводилась проверка на корректность имени.

На баше у меня так и не получается сделать безопасно. Если ты собираешься это пробовать, вначале сделай резервную копию той директории, в которой ты собираешься проводить эту операцию и запускай под отдельным юзером у которого нет доступа никуда кроме рабочей копии. И если после этой команды у тебя какие-нибудь не те файлы переименуются, то пеняй на себя:

 find . -name '*#U[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*' ! -name '*\\*' -execdir bash -c 'echo mv -i {} `echo -e "$(echo {} | sed s/#U/\\\\\\\\u/g | grep -vF ..)"`' \;

Я не даю никаких гарантий работоспособности этой фиговины... но оно в любом случае лучше того что ты сам придумываешь.