ディレクトリに1つのファイルだけを保存する方法は?

ディレクトリに1つのファイルだけを保存する方法は?

ファイルを復元しましたが、現在のファイル構造は次のとおりです。

root/MD5_of_file1/file1
root/MD5_of_file2/file2
...
root/MD5_of_filen/filen

これで、重複したエントリが同じフォルダにあるようです。ファイル名には情報は含まれず、回復中に見つかったブロック番号のみが含まれます。

構造を平坦化し、MD5ごとに1つのファイルだけを維持したいと思います。これをどのように効率的に実行できますか?

明確にするために、実際のデータは次のとおりです。

feceee0fc150d191c5fd48ca6acee2f6
feceee0fc150d191c5fd48ca6acee2f6/f225407559.odt
feceee0fc150d191c5fd48ca6acee2f6/f94654911.odt
e905bb0a76c0055a2be1b8285d39c715
e905bb0a76c0055a2be1b8285d39c715/f0702423.odt
e905bb0a76c0055a2be1b8285d39c715/f26479232.odt
e905bb0a76c0055a2be1b8285d39c715/f3084695.odt

私は次のように平坦化したいと思います。

f225407559.odt
f0702423.odt

ただし、ファイル名が異なるという保証はありません。ファイルは現在ファイルがあるフォルダの名前なので、その内容のMD5(計算済み)に簡単に名前を変更できます。

ベストアンサー1

for i in *(/); do  mv $i/*([1]) $i.odt;  rm -rf $i; done

zshglob修飾子を使用してください。*([1])英数字順に最初のファイルを選択します。

おすすめ記事