У меня есть большой (1,8 ГБ) файл, который я хочу разделить на файлы размером не более 100 МБ. Для этого я использую функцию разделения GNU, с опцией -d. Получающиеся числовые суффиксы являются странными. До 89, все хорошо, но тогда это начинается с 9000, затем 9001, ... и так далее. У кого-нибудь есть идея, почему я получаю это странное поведение?Неверный числовой суффикс с использованием GNU split
ответ
Это может быть неожиданностью split
, но это intended this way.
Для создания произвольного количества файлов при сохранении правильного лексического порядка генератор суффиксов расширяет число цифр, когда оно достигает наивысшей цифры, возможной в первом первом месте.
Лексический порядок необходимо легко обратить разделенным с помощью кошки:
split foo bar_
cat bar_* > foo
Если лексический порядок не были сохранены, новый foo
будет перемешалось.
Для достижения непрерывных чисел в качестве суффикса вы можете добавить аргумент -a <n>
, где <n>
- это количество цифр.
Следующая команда будет создавать файлы через foo_199
:
seq 20000 | split -d -a 3 -l 100 - foo_
Однако, то это до вас, чтобы выбрать ряд достаточно большие, чтобы иметь возможность создавать все суффиксы необходимых цифр, в противном случае split
команда с преждевременно прекратить с сообщением об ошибке:
split: output file suffixes exhausted
проблема с тех пор была включена в GNU Coreutils gotchas страницу
Какая именно команда вы используете? А какие файлы уже существуют в каталоге? –
Я смог воспроизвести проблему. Создал текстовый файл с 100000 строк и разделил его на 'split -d -l 1000 delme.txt delme_', и это создает файлы' delme_00' через 'delme_89' и' delme_9000' через 'delme_9009'. сплит-версия - 8,25 – chw21