I have this folder structure:
├── foo1 │ ├── bar1.txt │ └── bar2.txt ├── foo2 │ ├── bar3.txt │ └── bar4 with a space.txt └── foo3 └── qux1 ├── bar5.txt └── bar6.txt
that I would like to flatten into this, with an underscore between each folder level:
├── foo1_bar1.txt ├── foo1_bar2.txt ├── foo2_bar3.txt ├── foo2_bar4 with a space.txt ├── foo3_qux1.bar6.txt └── foo3_qux1_bar5.txt
I've looked around and I haven't found any solution that work, mostly I think because my problem has two particularities: there might be more than one folder level inside the root one and also because some files might have spaces.
Any idea how to accomplish this in bash? Thanks!
Edit: Running gleen jackman proposed answer I get this:
There are two underscores for the first level folder. Any idea how to either avoid this or just rename it so that is just one underscore? Thanks.