【发布时间】:2011-06-29 20:28:32
【问题描述】:
我正在建立一个网站,我想对我的图像的文件名进行哈希处理。
如何创建一个 bash 脚本文件,用旧文件名的 sha1 重命名目录中的每个文件?
我试过了:
#!/bin/bash
for file in *
do
if [ -f "$file" ];then
newfile="openssl sha1 $file"
mv "$file" $newfile"
fi
done
但这不起作用:(
编辑
根据这里的建议,我尝试了这个:
#!/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
这确实重命名了文件,但我不确定用什么来散列文件名。扩展是否被散列?路径了吗?
信息
然后我将使用 PHP 的 sha1() 函数来显示图像:
echo "<img src=\"images/".sha1("$nbra-$nbrb-".SECRET_KEY).".png\" />\n";
【问题讨论】:
-
文件名是否包含空格字符?
-
'没有重命名'和'没有'
-
为我工作。 new_names 是否存在?愚蠢的问题,我知道。
-
是否可以在没有文件夹或扩展名的情况下获取文件名的sha1?
-
关闭,但没有雪茄。使用反引号设置
$newfile,或者它们的bash 等效项$(),记得引用$file,以防它限制空格(newfile=$(openssl sha1 "$file"))。最后,您似乎错过了重命名行的引用。注意你想要$newfile的最后一个字,mv "$file" "${newfile##* }"。
标签: bash rename file-rename