Разделить много файлов одновременно

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

Например, у меня есть папка, и внутри этой папки находятся сотни файлов, которые начинаются с символа «а» и заканчиваются на «.txt». Как я могу получить split с одной строкой кода, чтобы разбить все эти файлы, скажем, на части, содержащие не более 20 строк текста? Что-то вроде:

split -l 20 a*.txt 

не работает, потому что split дает

extra operand "filename" error.

Спасибо

2
задан 16 July 2019 в 23:37

2 ответа

Это сделает задание:

find . -maxdepth 1 -type f -name 'a*.txt' -exec split --additional-suffix=.txt -l 20 {} {} \;

Выполните вышеупомянутую команду из каталога, который содержит файлы, которые Вы хотите разделить. Это будет:

  1. найдите все текстовые файлы в текущем пути с именами, запускающимися с a.
  2. разделите их и сохраните исходное имя файла разделения (так, чтобы Вы знали, от которого исходного файла оно было разделено), и добавьте буквы к нему.
  3. добавьте .txt в конец каждого недавно созданного имени файла для более легкой идентификации типа файла.
1
ответ дан 2 December 2019 в 03:27

Я главным образом использую разделение в сценарии, где я хочу позже splitted, чтобы части объединились вместе снова. В ситуации как Вы описывают, я не могу вообразить, как Вы могли позже их слияние в исходные файлы. Так, если в Вашем слиянии ситуации назад снова не релевантно, я думаю, что эта простая команда могла быть sufficent:

cat a*.txt | split -l 20
1
ответ дан 2 December 2019 в 03:27

Другие вопросы по тегам:

Похожие вопросы: