Добавить строку к каждому члену переменной в Bash - PullRequest
0 голосов
/ 31 января 2020

У меня есть следующая команда, чтобы собрать все файлы в папке и объединить их .... но в переменной хранятся только имена файлов, а не каталог. Как я могу добавить 'colid-data /' к каждому из файлов для cat для нас?

cat $(ls -t colid-data) > catfiles.txt

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Если вы хотите объединить их в порядке дат, рассмотрите возможность использования zsh:

cat colid-data/*(.om) >catfiles.txt

, который объединит только все обычные файлы в порядке их последнего изменения.

Начиная с bash, вы можете сделать это с помощью

zsh -c 'cat colid-data/*(.om)' >catfiles.txt

Если порядок файлов не важен (и если в каталоге только обычные файлы, а не подкаталоги), просто используйте

cat colid-data/* >catfiles.txt

Все эти варианты будут работать с именами файлов, содержащими пробелы, символы табуляции и новые строки, поскольку список имен путей, возвращаемых шаблоном глобализации имени файла, не разбивается на дополнительные слова (что является результатом подстановки команды без кавычек).

0 голосов
/ 31 января 2020

Список имен файлов, а не каталога.

cat $(ls -t colid-data/*) > catfiles.txt

Обратите внимание, что это не будет работать, если любое из имен файлов содержит пробелы. См. Почему бы не разобрать ls? для лучшей альтернативы.

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