我该如何使用Unix shell重命名目录中的文件,使它们的名称为它们的crc32哈希值+原来的扩展名?
例如:
例如:
1-s2.0-105687199400063A-main.pdf
=> e3492cf3.pdf
for file in `ls`; do mv "${file}" `cksum "${file}" | cut -d' ' -f1`."${file##*.}"; done
awk
比使用 cut
更好。
for file in /your/dir/*
do
extension="${file##*.}" #gets the block after the last dot, that is, the extension
new_name=$(crc32 $file) #calculates the crc32 value of the file
mv $file ${new_name}.${extension} #renames by moving the original file to the new name
done
pdf
文件? - fedorqui