Comment créer le même fichier dans tous les sous-répertoires?

1

J'ai plusieurs sous-répertoires existants, tels que:

/path/to/my/subs/a
/path/to/my/subs/b
/path/to/my/subs/c

Non, je veux créer un nouveau fichier dans chacun d'eux. Le nom du fichier est constant, comme ceci:

/path/to/my/subs/a/foo.md
/path/to/my/subs/b/foo.md
/path/to/my/subs/c/foo.md

Comment puis-je faire cela? J'espérais touch /path/to/my/subs/*/foo.mdque ça irait mais c'est dittouch: /path/to/my/subs/*/foo.md: No such file or directory

Maxim Zubarev
la source

Réponses:

0

En supposant que vous utilisiez bashcomme shell, utilisez ensuite l’expansion par accolade.

touch /path/to/my/subs/{a,b,c}/foo.md
fd0
la source
0

Vous pouvez utiliser l' findutilitaire:

find /path/to/my/subs -type d -links 2 -exec touch "{}/foo.md" \;

Cela va parcourir tout l’arbre en commençant par les sous-marins, localiser les répertoires feuille (terminal) et toucher un fichier foo md.

Vous pouvez également omettre la partie "-exec" ... et l'utiliser xargspour créer tous les fichiers à la fin, générant moins de touchfichiers binaires, ou utiliser une simple pression sur une touche:

touch $( find /path/to/my/subs -type d -links 2 | sed -e 's#$#/foo.md#g' )

La findpartie obtiendra les répertoires, sedles transformera en noms de fichiers appropriés.

Si vous avez une seule couche de répertoires:

pour dir dans / path / to / my / subs / *; touchez $ dir / foo.md; terminé

LSerni
la source