В случае, если вы просто хотите разделить на x количество строк в каждом файле, данные ответы о split
в порядке. Но мне интересно, чтобы никто не обращал внимания на требования:
- "не считая их" -> используя wc + cut
- "имея остаток в дополнительном файле" -> по умолчанию делает split
Я не могу сделать это без "wc + cut", но я использую это:
split -l $(expr `wc $filename | cut -d ' ' -f3` / $chunks) $filename
Это может быть легко добавлено к вашим функциям bashrc, так что вы можете просто вызывать его, передавая имя файла и куски:
split -l $(expr `wc $1 | cut -d ' ' -f3` / $2) $1
В случае, если вы хотите, чтобы в дополнительном файле было только x кусков без остатка, просто измените формулу, чтобы суммировать ее (куски - 1) в каждом файле. Я использую этот подход, потому что обычно я просто хочу х количество файлов, а не х строк на файл:
split -l $(expr `wc $1 | cut -d ' ' -f3` / $2 + `expr $2 - 1`) $1
Вы можете добавить это к сценарию и назвать его «способом ниндзя», потому что, если ничто не соответствует вашим потребностям, вы можете создать его: -)