このコマンドを使用して、任意の文字でファイル名を変更し、sha1sum
すべてのファイルをサブディレクトリから現在のディレクトリに移動します。
for fname in `find . -type f`; do mv "$fname" $(echo "$fname" | sha1sum | cut -f1 -d' ').html; done
- しかし、問題はこれが一意のファイル名を生成することです。 sha1sumによって生成された名前が一意でない可能性があること(複数回生成される)が心配です。
- 上記のコマンドを実行してから別のディレクトリから別のコマンドを実行すると、各ファイルに固有のファイル名が生成されますか?
ベストアンサー1
sha1sum
入力が一意である限り、出力も一意です。 (とても運が悪く、sha1sum
衝突が発生しない限り)
ユースケースでは、printf '%s' "$fname"
代わりに使用するのが良い習慣です。echo "$fname"
前者は$fname
is -n
、または、...-e
のときに動作します。また見てくださいエンゾチップ備考、一見見逃した。
また、あなたの動機が何であるかはわかりませんが、sha1sum
ファイル名の代わりにファイルのコンテンツを提供することを検討することもできます。これにより、各固有のコンテンツの固有のファイル名を取得できます。