jeudi 8 janvier 2015

Flattening folder structure


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:


enter image description here


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.



Aucun commentaire:

Enregistrer un commentaire