Files

使用 sha1sum 中的隨機字元重命名文件。名稱會是唯一的嗎?

  • May 18, 2016

我正在使用此命令重命名具有隨機字元的文件,sha1sum並將所有文件從子目錄移動到目前目錄:

for fname in `find . -type f`; do mv "$fname" $(echo "$fname" | sha1sum | cut -f1 -d' ').html; done
  1. 但問題是:它會創建唯一的文件名嗎?我擔心從 sha1sum 生成的名稱可能不是唯一的(生成兩次或更多)。
  2. 如果我執行上面的命令,然後在另一個目錄中執行另一個命令,它會為每個文件生成一個唯一的文件名嗎?

sha1sum只要輸入是唯一的,輸出就會是唯一的。(除非你非常倒霉並且你發現了一些sha1sum碰撞)。

至於您的案例:使用printf '%s' "$fname"代替是一個好習慣echo "$fname",前者將在$fnameis-n-e,…時起作用

另外,我不確定您的動機究竟是什麼,但您可以考慮sha1sum使用文件內容而不是文件名來提供。這樣,您將獲得每個唯一內容的唯一文件名。

引用自:https://unix.stackexchange.com/questions/18993