LINUX.ORG.RU

Из командной как это сделать?

 


0

2

есть файлы, имена которых в base64, как их переименовать? пока только декодирование додумал как сделать

=Xutf-8XBXQUEuQjI3MDYyMDE2LnR4dA==X=
=Xutf-8XBXQUEyNzA2MjAxNi50eHQ=X=

find . -type f -name '*utf-8*'  -printf '%f\n'  | sed 's/^=Xutf-8XBX//; s/X=$//' | base64 -d
как то наверное через xargs же можно

★★★

echo "=Xutf-8XBXQUEuQjI3MDYyMDE2LnR4dA==X="| while read file; do 
 target=`echo ${file:10:-2}|base64 -d`; 
 echo mv $file $target;
done;

это все в одну строчку find вместо первого echo, а второй надо убрать и обработать на случай пробелов 8)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

банально в цикле перебрать, необязательно киллометровые пайпы собирать даже

anonymous
()
Ответ на: комментарий от anonymous

банально в цикле перебрать

не покажите пример этой банальщины?

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

тогда еще рано пользоваться моим ответом, а сначала надо почитать мануалы по bash

Deleted
()
Ответ на: комментарий от wolverin

он говорит делай так:

find . -type f -name '*utf-8*'  -printf '%f\n'  | while read file; do 
 target=`echo ${file:10:-2}|base64 -d`; 
 echo mv $file $target;
done;

этот код не переименовыает, а только печатает что хочет делать. если ошибок не будет - то переименовывай файлы:
find . -type f -name '*utf-8*'  -printf '%f\n'  | while read file; do 
 target=`echo ${file:10:-2}|base64 -d`; 
 mv $file $target;
done;

bl ★★★
()
Ответ на: комментарий от Deleted

subwoofer

спасибо, значит со вторым эхом все ок )

wolverin ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.