web-dev-qa-db-fra.com

Comment créer récursivement un répertoire Textures dans chaque répertoire existant dans Bash, puis les supprimer?

Disons que j'ai la structure suivante:

./
├── Dir1
├── Dir2
│   ├── SubDir1
│   │   └── SubSubDir1
│   └── SubDir2
└── Dir3
    └── SubDir1

Utilisez ceci pour créer la structure de test:

mkdir -p Dir1 Dir2/SubDir1/SubSubDir1 Dir2/SubDir2 Dir3/SubDir1

Je voudrais créer un dossier Texture dans chaque répertoire pour inclure l'emplacement actuel afin qu'il ressemble à ceci (tous les nouveaux répertoires Texture sont marqués avec *):

./
├── Dir1
│   └── Textures*
├── Dir2
│   ├── SubDir1
│   │   ├── SubSubDir1
│   │   │   └── Textures*
│   │   └── Textures*
│   ├── SubDir2
│   │   └── Textures*
│   └── Textures*
├── Dir3
│   ├── SubDir1
│   │   └── Textures*
│   └── Textures*
└── Textures*

Ensuite, je serais également en mesure de supprimer ces mêmes dossiers après avoir travaillé avec eux. Vous pouvez supposer qu'aucun autre répertoire nommé Textures ne doit être enregistré.


Je voudrais donc créer un répertoire Textures dans le répertoire courant et tous ses sous-répertoires. Et j'aimerais pouvoir supprimer tous les répertoires nommés Textures lorsque j'aurai fini de déplacer des fichiers.

4
kingcobra1986

Vous pouvez utiliser une boucle ...

shopt -s globstar                   # turn on recursive globbing
for d in **/; do                    # for every directory
    echo mkdir -p "$d"Textures      # make a new directory inside named Textures
done

Supprimez echo après le test pour créer réellement les répertoires.

Vous pouvez désactiver globstar avec shopt -u globstar, mais il est désactivé par défaut et le sera lorsque vous démarrez un nouveau shell.

Faites vos choses ...

Ensuite, pour supprimer les répertoires, d'abord find

find -type d -name "Textures"

Ensuite, si la sortie semble correcte, ajoutez -delete

find -type d -name "Textures" -delete
4
Zanna