J’ai trouvé beaucoup de scripts qui vont aplatir récursivement tout le contenu des sous-dossiers et des sous-dossiers de ces sous-répertoires. Mais je veux juste aplanir un niveau et garder les sous-dossiers intacts. Comment pourrais-je y arriver avec peut-être un script bash?
mv */* .
Si vous ne vous souciez pas des répertoires cachés, c’est aussi simple que cela.
mkdir -p dir0/dir1/dirA/dirX mkdir -p dir0/dir2/dirB/dirY mkdir -p dir0/dir3/dirC/dirZ
Voyons comment c’est maintenant:
tree dir0
Résultats:
dir0/ ├── dir1 │ └── dirA │ └── dirX ├── dir2 │ └── dirB │ └── dirY └── dir3 └── dirC └── dirZ
Maintenant, allons courir
find dir0 -mindepth 2 -maxdepth 2 -exec mv -i '{}' dir0 ';'
Regardons comment dir0 est maintenant:
tree dir0
Résultat:
dir0 ├── dir1 ├── dir2 ├── dir3 ├── dirA │ └── dirX ├── dirB │ └── dirY └── dirC └── dirZ
Ps: Vous pourriez aussi lancer quelque chose comme ceci:
mv dir0/*/* dir0
Que dis-tu de ça?
array=($(ls)) for i in "${array[@]}" do echo $i if [ -d $i ]; then cd $i ls cd .. fi done
vous obtenez la sortie de tous les sous-répertoires de premier niveau, plus tout depuis le niveau supérieur.