3

我将如何使用 unix shell 重命名目录中的文件,以便它们的名称是它们的 crc32 哈希 + 它们的原始扩展名?

例子:

1-s2.0-105687199400063A-main.pdf=>e3492cf3.pdf

4

2 回答 2

2
for file in `ls`; do mv "${file}" `cksum "${file}" | cut -d' ' -f1`."${file##*.}"; done

也许awk是比这样做更好的方法cut

于 2013-06-03T13:19:48.620 回答
1

像这样的东西可以工作:

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
于 2013-06-03T13:13:42.090 回答