Ho questa struttura di cartelle:
├── foo1
│ ├── bar1.txt
│ └── bar2.txt
├── foo2
│ ├── bar3.txt
│ └── bar4 with a space.txt
└── foo3
└── qux1
├── bar5.txt
└── bar6.txt
che vorrei appiattire in questo, con un carattere di sottolineatura tra ogni livello di cartella:
├── foo1_bar1.txt
├── foo1_bar2.txt
├── foo2_bar3.txt
├── foo2_bar4 with a space.txt
├── foo3_qux1.bar6.txt
└── foo3_qux1_bar5.txt
Mi sono guardato intorno e non ho trovato alcuna soluzione che funzioni, soprattutto penso che il mio problema abbia due particolarità: potrebbe esserci più di un livello di cartella all'interno di quello root e anche perché alcuni file potrebbero avere spazi.
Qualche idea su come realizzare questo in bash? Grazie!
Modifica : esecuzione gleen jackman proposta di risposta Ottengo questo:
Ci sono due trattini bassi per la cartella di primo livello. Qualche idea su come evitare questo o semplicemente rinominarlo in modo che sia solo un trattino basso? Grazie.
foo1__qux1_bar5.txt
, due trattini bassi nel primo livello di cartella. Ho provato a fare casini con la tua linea di base ma nulla sembrava funzionare. Forse devo aggiungere qualcosa?