1

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

/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

2 ответа2

0

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

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

Вы можете использовать утилиту 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; сделанный

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .