путь расширение звездочки и создание новых файлов - PullRequest
0 голосов
/ 25 сентября 2019

У меня были каталоги, такие как 1 2 3, в каталоге, который называется. Я хотел создать файлы 1 / file.txt, 2 / file.txt, 3 / file.txt таким образом $> a/*/file.txt, но не смог.Я думал, что * будет расширен до 1, 2 и 3. Можете ли вы объяснить, что здесь произошло?

1 Ответ

0 голосов
/ 25 сентября 2019

Я не уверен на 100%, но я думаю, что расширение оболочки с * будет работать, только если файлы уже существуют.Кроме того, я не думаю, что вы можете указать несколько целей с помощью > redirection

Если вы знаете все имена каталогов в a, тогда вы можете использовать расширение скобки (см. https://mywiki.wooledge.org/BraceExpansion дляподробнее)

$ # echo is here used to show how the shell would expand the braces
$ echo a/{1,2,3}/file.txt
a/1/file.txt a/2/file.txt a/3/file.txt
$ # touch command will create an empty file if it doesn't already exist
$ touch a/{1,2,3}/file.txt

Если вы не знаете всех имен каталогов, вместо этого вы можете использовать цикл

$ for d in a/*; do touch "$d"/file.txt; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...