Предполагая, что вы используете в bash
качестве оболочки, используйте расширение скобок.
touch /path/to/my/subs//foo.md
У меня есть много существующих подкаталогов, например:
/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
Предполагая, что вы используете в bash
качестве оболочки, используйте расширение скобок.
touch /path/to/my/subs//foo.md
Вы можете использовать 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; сделанный