Aplanar un directori niu & Jerarquia de fitxers des de la línia d'ordres de Mac OS X
Alguna vegada heu necessitat aplanar una estructura de directoris, movent tot el contingut del fitxer des de les carpetes secundàries d'un directori a una única carpeta? Tot i que podeu fer-ho manualment movent-vos per fitxers i carpetes des del sistema de fitxers de Mac OS X o Linux, una opció més ràpida és recórrer a la línia d'ordres. Potser en un moment donat heu creat una jerarquia imbricada de directoris que ara heu de desfer movent tots els fitxers d'aquestes carpetes imbricades i tornant a un sol directori, o potser esteu buscant simplificar una estructura de directoris, sigui quin sigui el motiu, això el truc funciona força bé.
L'ús de la línia d'ordres per aconseguir aplanar fitxers i estructures de directoris és, òbviament, el millor reservat per als usuaris avançats que se sentin còmodes amb l'ús del terminal en general, si això no us descriu, penseu en fer-ho manualment mitjançant el Finder. , o utilitzar l'aplicació Mac Automator per aconseguir una automatització similar de les activitats del sistema de fitxers. Tanmateix, aquí ens centrem en l'aplanament de directoris des de la línia d'ordres.
Exemple d'aplanament d'un directori de fitxers nius
Per entendre millor què estem tractant d'aconseguir, prenguem un exemple d'estructura de directoris imaginària anomenada TestDirectory situada a la carpeta d'inici de l'usuari. En aquest exemple, TestDirectory conté subcarpetes com SubDirectory1, SubDirectory2, SubDirectory3, etc., cadascuna amb fitxers a les carpetes respectives. El que volem fer aquí és aplanar l'estructura del directori, movent tots els fitxers del SubDirectory(X) al directori principal "TestDirectory".El directori inicial i els continguts que es mostren recursivament amb el podrien semblar a això:
$ cerca ~/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 aplanar el contingut d'aquest directori i subdirectori a la carpeta TestDirectory, hauríeu d'utilitzar la següent cadena d'ordres:
trobar TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'
Després que s'hagi aplanat el contingut del directori, hauria de tenir aquest aspecte quan aparegui:
~/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
Tingueu en compte que els subdirectoris encara existiran, només estaran buits. Té sentit? Si no és així, o si això no demostra el que voleu aconseguir, és probable que no vulgueu aplanar un directori en absolut, potser voleu combinar-lo o fer servir idem per fer una còpia complexa a un altre lloc.
Aplanar una estructura de directoris i una jerarquia de fitxers nius amb la línia d'ordres
Llest per continuar? La cadena d'ordres que farem servir per aplanar una estructura de directoris i moure tots els fitxers dels subdirectoris a la base del directori de destinació és la següent:
find -mindepth 2 -type f -exec mv -i '{}' ';'
Reemplaça pel directori que escolliu per aplanar, tal com es mostra a l'exemple anterior.
Sí, el directori apareix dues vegades a la cadena d'ordres, la primera vegada és el directori que s'està cercant per aplanar els subdirectoris i la segona com a destinació dels elements trobats.
Sigues precís amb la destinació especificada, perquè això no és reversible (bé, almenys sense molta feina manual per part teva), així que només fes-ho si estàs absolutament segur que vols traslladar-te. tots els fitxers dels directoris de destinació directoris fills tornen a la carpeta arrel de destinació.
Com s'ha esmentat abans, també podeu fer-ho al Finder d'OS X, o almenys observar els canvis de fitxers i carpetes al Finder. Opció+clic a les fletxes petites de la vista Llista s'obren tots els subdirectoris, mostrant la jerarquia de carpetes com aquesta:
Després de jugar amb una varietat d' alternatives bash i zsh, un comentarista de StackExcange va deixar aquest truc pràctic i va acabar sent el mètode més fàcil i compatible. Si coneixeu una manera millor d'aplanar un directori imbricat, feu-nos-ho saber als comentaris!