«Cat» в несколько файлов с использованием расширения скобки - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в bash и пытаюсь набрать текст в несколько файлов с помощью одной команды, используя расширение скобок.

Я попытался: cat > file_{1..100} записать в 100 файлов какой-нибудь текст, который я буду введите в терминале. Я получаю следующую ошибку:

bash: file_{1..100}: ambiguous redirect

Я также пытался: cat > "file_{1..100}", но это создает отдельный файл с именем: file_{1..100}.

Я пытался: cat > `file_{1..100}` но это дает ошибку: file_1: command not found

Как я могу добиться этого с помощью расширения скобки? Возможно, есть другие способы использования других утилит и / или конвейеров. Но я хочу знать, возможно ли это с помощью простого расширения скобки или нет.

Ответы [ 2 ]

4 голосов
/ 24 апреля 2020

Вы не можете сделать это только с cat. Он только записывает свои выходные данные в стандартный вывод, и этот дескриптор файла может быть связан только с одним файлом.

Однако вы можете сделать это с помощью tee file_{1..100}.

. 1014 * рассмотреть возможность использования tee file_{01..100} вместо этого, чтобы имена файлов были дополнены нулями, чтобы все имели одинаковую ширину: file_001, file_002, ... Это имеет то преимущество, что порядок лексикографии c будет совпадать с порядком чисел, и поэтому ls, *, et c, обработает их в числовом порядке. Без этого возникает ситуация, когда file_2 идет после file_10 в лексикографическом c порядке.

3 голосов
/ 24 апреля 2020

цель может быть только труба, а не несколько файлов. Если вы хотите перенаправить вывод в несколько файлов, используйте tee

cat | tee file_{1..100}

Не забудьте проверить man-tee, например, если вы хотите добавить к файлам, вы должны добавить опцию -a (tee -a file_ {1..100})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...