История изменений
Исправление 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 ..)"`' \;
Я не даю никаких гарантий работоспособности этой фиговины... но оно в любом случае лучше того что ты сам придумываешь.