Переименуйте файлы к их BASE64

Я хочу переименовать только имена файлов к их BASE64, не расширение. Таким образом, я создал этот сценарий, который не работает. Кто-либо может сказать его проблему?

#!/bin/bash
#initialize with random text
onlyfilename="abc"
extension="def"
#go through all files in the directory
for filename in ./*;
do
        #avoid my script files (enc & dec)
        if [ $filename != "./enc" ] && [ $filename != "./dec"  ]; then
                #remove ./ from beginning and get just filename
                $onlyfilename=$(basename ${filename:2})
                #get extension
                $extension=${onlyfilename##*.}
                #check if they are correct
                echo $onlyfilename
                echo $extension
                #rename filename to base64
                mv "$filename" "$(echo -n $onlyfilename | base64).$extension"
        fi
done

Цель: Я хочу переименовать свои файлы к их Base64 и загрузить их. Будет имя файла Base64 быть допустимым именем файла для загрузки? В противном случае есть ли какая-либо альтернатива Base64?

0
задан 4 November 2016 в 08:45

2 ответа

Я получил справку от это сообщение .

Для кодирования:

#!/bin/bash
#ENCODE
for file in *;
do
    if [ $file != "enc" ] && [ $file != "dec"  ]; then
        new_name=$(echo -n "${file%.*}" | base64 -w0)
        mv "$file" "$new_name.${file##*.}"
    fi
done

Для декодирования:

#!/bin/bash
#DECODE
for file in *;
do
    if [ $file != "enc" ] && [ $file != "dec"  ]; then
        new_name=$(echo -n "${file%.*}" | base64 -w0 --decode)
        mv "$file" "$new_name.${file##*.}"
    fi
done

я протестировал обоих; они работают.

0
ответ дан 28 September 2019 в 06:44

Как острота

$ for file in * ; do echo  "$file" "$(basename $file | base64 )"."${file##*.}" ; done
file1.png ZmlsZTEucG5nCg==.png
file2.jpeg ZmlsZTIuanBlZwo=.jpeg
file3.txt ZmlsZTMudHh0Cg==.txt

Замена сначала echo с mv для фактического переименования их

1
ответ дан 28 September 2019 в 06:44

Другие вопросы по тегам:

Похожие вопросы: