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

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

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

/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

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

touch /path/to/my/subs/{a,b,c}/foo.md

решение2

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

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

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

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

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

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

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

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

Связанный контент