Как создать один и тот же файл во всех подкаталогах?

257
Maxim Zubarev

У меня есть много существующих подкаталогов, например:

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

Нет, я хочу создать новый файл в каждом из них. Имя файла является постоянным, например:

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

Как мне это сделать? Я надеялся touch /path/to/my/subs/*/foo.mdсделать, но он сказалtouch: /path/to/my/subs/*/foo.md: No such file or directory

1

2 ответа на вопрос

0
fd0

Предполагая, что вы используете в bashкачестве оболочки, используйте расширение скобок.

touch /path/to/my/subs//foo.md 
0
LSerni

Вы можете использовать findутилиту:

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

Это обойдёт все дерево, начиная с подпрограмм, найдет конечные (конечные) каталоги и коснется там файла foo md.

Вы также можете пропустить часть "-exec" ... и использовать xargsдля создания файлов в конце, создавая меньше touchдвоичных файлов, или использовать одно касание:

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

findЧасть получит каталоги, sedпревратит их в соответствующие имена файлов.

Если у вас есть один слой каталогов:

для директории в / path / to / my / subs / *; коснитесь $ dir / foo.md; сделанный