Avviso importante: tutti i testi di questo sito web sono stati tradotti da diverse lingue. Ci scusiamo per la loro qualità, potrebbe essere di qualità inferiore al solito. Saluti, l'Amministrazione del sito. E-mail: info@itbookmac.com

Appiattisci una directory nidificata e una gerarchia di file dalla riga di comando di Mac OS X.

Usare la riga di comando per realizzare l’appiattimento di file e strutture di directory è ovviamente meglio riservato agli utenti avanzati che si sentono a proprio agio con l’uso del terminale in generale, se ciò non ti descrive, considera di farlo manualmente tramite Finder o utilizzando l’app Mac Automator per realizzare un’automazione simile delle attività del file system. Tuttavia, ci stiamo concentrando sull’appiattimento delle directory dalla riga di comando.

Esempio di conversione di una directory di file nidificata

Per capire meglio cosa stiamo cercando di realizzare, prendiamo un esempio di struttura di directory immaginaria chiamata TestDirectory che si trova in una cartella Home dell’utente. In questo esempio, TestDirectory contiene sottocartelle come Sottodirectory1, Sottodirectory2, Sottodirectory3 e così via, ognuna con file nelle rispettive cartelle. Quello che stiamo cercando di fare qui è appiattire la struttura delle directory, spostando tutti i file da SubDirectory (X) alla directory principale “TestDirectory”. La directory iniziale e i contenuti mostrati in modo ricorsivo potrebbero apparire in questo modo:

$ find ~ / TestDirectory / -type f
~ / TestDirectory / rooty.jpg
~ / TestDirectory / SampleDirectory1 / beta-tool-preview.jpg
~ / TestDirectory / SampleDirectory1 / AlphaBeta-tool.jpg
~ / TestDirectory / SampleDirectory2 / test-tools.jpg
~ / TestDirectory / SampleDirectory3 / test-png.jpg
~ / TestDirectory / SampleDirectory3 / test1.jpg
~ / TestDirectory / SampleDirectory3 / test2.jpg

Per appiattire nuovamente la directory e il contenuto della sottodirectory nella cartella TestDirectory, si utilizzerà la seguente stringa di comando:

find TargetDirectory / -mindepth 2 -type f -exec mv -i ‘{}’ TargetDirectory / ‘;’

Dopo che il contenuto della directory è stato appiattito, dovrebbe apparire come questo quando elencato:

~ / TestDirectory / rooty.jpg
~ / TestDirectory / beta-tool-preview.jpg
~ / TestDirectory / AlphaBeta-tool.jpg
~ / TestDirectory / test-tools.jpg
~ / TestDirectory / test-png.jpg
~ / TestDirectory / test1.jpg
~ / TestDirectory / test2.jpg

Nota che le sottodirectory continueranno a esistere, saranno semplicemente vuote. Ha senso? In caso contrario, o se ciò non dimostra ciò che si vuole realizzare, probabilmente non si vuole appiattire una directory, forse si sta cercando di unire o usare idem per fare una copia complessa altrove.

Appiattimento di una struttura di directory e gerarchia di file nidificati con la riga di comando

Pronto a procedere? La stringa di comando che useremo per appiattire una struttura di directory e spostare tutti i file dalle sottodirectory alla base della directory di destinazione è la seguente:

trovare [DIRECTORY] -mindepth 2 -type f -exec mv -i ‘{}’ [DIRECTORY] ‘;’

Sostituisci [DIRECTORY] con la directory di tua scelta da appiattire, come dimostrato nell’esempio sopra.

Sì, la directory viene visualizzata due volte nella stringa di comando, la prima volta la directory viene cercata per appiattire le sottodirectory e la seconda volta come destinazione per gli elementi trovati.

Sii preciso con la destinazione specificata, perché questo non è reversibile (beh, almeno senza un sacco di lavoro manuale da parte tua), quindi fallo solo se sei assolutamente sicuro di voler riposizionare tutti i file nel bambino delle directory di destinazione le directory tornano alla cartella radice di destinazione.

Come accennato in precedenza, è possibile farlo anche nel Finder di OS X, o almeno osservare le modifiche al file e alla cartella nel Finder. L’opzione + facendo clic sulle piccole frecce nella vista Elenco apre tutte le sottodirectory, mostrando la gerarchia delle cartelle in questo modo:

Struttura della directory annidata da appiattire come mostrato nel Finder di Mac OS X

Dopo aver giocato con una varietà di alternative bash e zsh, questo pratico trucco è stato lasciato da un commentatore su StackExcange e ha finito per essere il metodo più semplice e più compatibile. Se sei a conoscenza di un modo migliore per appiattire una directory annidata, faccelo sapere nei commenti!

Like this post? Please share to your friends: