私はこのフォルダー構造を持っています:
├── foo1
│ ├── bar1.txt
│ └── bar2.txt
├── foo2
│ ├── bar3.txt
│ └── bar4 with a space.txt
└── foo3
└── qux1
├── bar5.txt
└── bar6.txt
各フォルダーレベルの間にアンダースコアを付けて、これにフラット化したいと思います。
├── foo1_bar1.txt
├── foo1_bar2.txt
├── foo2_bar3.txt
├── foo2_bar4 with a space.txt
├── foo3_qux1.bar6.txt
└── foo3_qux1_bar5.txt
調べてみましたが、うまくいく解決策が見つかりませんでした。ほとんどの場合、私の問題には2つの特殊性があるためだと思います。ルートレベル内に複数のフォルダーレベルがある場合と、一部のファイルにスペースがある場合があります。
これをbashで達成する方法はありますか?ありがとう!
編集:グリーンジャックマンの提案された回答の実行私はこれを取得します。
第1レベルのフォルダーには2つの下線があります。これを回避する方法、または名前を1つだけアンダースコアに変更する方法はありますか?ありがとう。
foo1__qux1_bar5.txt
ます。つまり、最初のフォルダーレベルに2つのアンダースコアが表示されます。bashの行をいじってみましたが、何も機能しないようです。多分私は何かを追加する必要がありますか?