Man*_*anu 8 bash rename file-rename
我正在建立一个网站,我想哈希我的图像的文件名.
如何创建一个bash脚本文件,使用旧文件名的sha1重命名目录中的每个文件?
我试过了 :
#!/bin/bash
for file in *
do
if [ -f "$file" ];then
newfile="openssl sha1 $file"
mv "$file" $newfile"
fi
done
Run Code Online (Sandbox Code Playgroud)
但那不起作用:(
编辑
根据这里的建议我尝试了这个:
#!/bin/bash
for file in old_names/*
do
if [ -f "$file" ];then
newfile=$(openssl sha1 $file | awk '{print $2}')
cp $file new_names/$newfile.png
fi
done
Run Code Online (Sandbox Code Playgroud)
这会重命名文件,但我不确定用于散列文件名的内容.扩展得到了解释吗?走了路?
信息
然后我将使用PHP的sha1()函数来显示图像:
echo "<img src=\"images/".sha1("$nbra-$nbrb-".SECRET_KEY).".png\" />\n";
Run Code Online (Sandbox Code Playgroud)
到目前为止答案中的代码示例以及编辑哈希文件的内容.如果要创建的文件名是以前文件名的哈希值,不包括路径或扩展名,请执行以下操作:
#!/bin/bash
for file in old_names/*
do
if [ -f "$file" ]
then
base=${file##*/}
noext=${base%.*}
newfile=$(printf '%s' "$noext" | openssl sha1)
cp "$file" "new_names/$newfile.png"
fi
done
Run Code Online (Sandbox Code Playgroud)