sha1sumの任意の文字を使用してファイルの名前を変更します。名前はユニークですか?

sha1sumの任意の文字を使用してファイルの名前を変更します。名前はユニークですか?

このコマンドを使用して、任意の文字でファイル名を変更し、sha1sumすべてのファイルをサブディレクトリから現在のディレクトリに移動します。

for fname in `find . -type f`; do mv "$fname" $(echo "$fname" | sha1sum | cut -f1 -d' ').html; done
  1. しかし、問題はこれが一意のファイル名を生成することです。 sha1sumによって生成された名前が一意でない可能性があること(複数回生成される)が心配です。
  2. 上記のコマンドを実行してから別のディレクトリから別のコマンドを実行すると、各ファイルに固有のファイル名が生成されますか?

ベストアンサー1

sha1sum入力が一意である限り、出力も一意です。 (とても運が悪く、sha1sum衝突が発生しない限り)

ユースケースでは、printf '%s' "$fname"代わりに使用するのが良い習慣です。echo "$fname"前者は$fnameis -n、または、...-eのときに動作します。また見てくださいエンゾチップ備考、一見見逃した。

また、あなたの動機が何であるかはわかりませんが、sha1sumファイル名の代わりにファイルのコンテンツを提供することを検討することもできます。これにより、各固有のコンテンツの固有のファイル名を取得できます。

おすすめ記事