Можно попробовать
find . -maxdepth 1 -print0 | xargs -I '{}' -r0 mv '{}' ..
который перезапишет файлы простофили в..
Можно использовать mv-u '{}', чтобы не перезаписать если простофиля в.. то же или более новый
Преобразуйте число в шестнадцатеричное число, чем использование echo
распечатать согласно последовательности байта и каналу это в base64
. Таким образом для кодирования целого числа 10 base64 можно использовать:
echo -en '\xA' | base64
Объяснить результат. Байт 10 имеет следующее двоичное представление:
00001010
То, что делает base64, он разделяет на блоки base64 в группы 6 битов. Таким образом с дополнением мы получаем следующие два 6lets:
000010 100000
Которые в десятичном числе равняются 2 и 32, которые соответствуют буквам C и g.
Приведенная ниже команда преобразует десятичное целое число в радикс 64. Она не использует схему кодирования Base64, но использует символы, используемые URL-safe вариантом схемы кодирования Base64 в качестве цифр.
awk 'NR==FNR{a[NR-1]=$0;next}{if($0==0){print "A";next}o="";for(n=$0;n!=0;n=int(n/64))o=a[n%64]o;print o}' <(printf %s\\n {A..Z} {a..z} {0..9} - _) -
Команда ниже делает то же самое в Bash. Она также работает в Zsh, если заменить l%64
на l%64+1
.
unset a;a=({A..Z} {a..z} {0..9} - _);while IFS= read l;do if ((l==0));then echo A;continue;fi;o=;for ((;l! =0;l/=64));do o=${a[l%64]}$o;done;printf %s\\\\n "$o";done
Это конвертирует радикс 64 в десятичную систему:
awk 'NR==FNR{a[$0]=NR-1;next}{o=0;for(i=NF;i>=1;i--)o+=a[$i]*64^(NF-i);print o}' FS= <(printf %s\\\\n {A. .Z} {a..z} {0..9} - _) -
Это делает то же самое в Bash:
unset a;i=0;declare -A a;for x in {A..Z} {a..z} {0..9} - _;do a[$x]=$((i++));done;while IFS= read l;do o=0;for((i=${#l};i>=1;i--));do let o+=${a[${l:i-1: 1}]}*64**(${#l}-i);done;echo "$o";done
Команды awk
приводят к потере точности с 2**53+1
и большими числами, но чтобы избежать этого, можно добавить -M
(--bignum
) в gawk
4. 1 и более поздних версиях.
Команды Bash приводят к целочисленному переполнению при 2**63
и больших числах.
Cg==
где C=2 и g=32 согласно Википедии, почему это? Не был должен это бытьK
и возможно некоторое дополнение==
? И единственное число в основе 10 должно быть только одним числом/буквой в основе 64. – Jonas 24.10.2010, 19:31base64
команда. Таким образом10
должен бытьK
. Я попробовалecho -en '\b1010' | base64
но это не работало. – Jonas 24.10.2010, 19:52base64url
на Википедию. Но я предполагаю, что это не доступно как команда в Bash. Таким образом, я, вероятно, должен найти его где-нибудь или реализовать его сам. Спасибо так или иначе. – Jonas 24.10.2010, 20:11