Попробуйте это:
split --additional-suffix='.lst' -da3 -l 1024 list.lst ''
Причина перехода к9000
(для более чем 89 частей )заключается в том, что числовая длина по умолчанию равна 2
.
Измените с помощью опции -a
. Чтобы нумерация файлов оставалась числовой (и была монотонной (, всегда увеличивайте ))и используйте длину, превышающую максимальное значение возможного количества разбиений.
$ split -a 3 -d -l1024./list.lst
$ ls
list.lst x009 x019 x029 x039 x049 x059 x069 x079 x089 x099 x109 x119
x000 x010 x020 x030 x040 x050 x060 x070 x080 x090 x100 x110 x120
x001 x011 x021 x031 x041 x051 x061 x071 x081 x091 x101 x111 x121
x002 x012 x022 x032 x042 x052 x062 x072 x082 x092 x102 x112 x122
x003 x013 x023 x033 x043 x053 x063 x073 x083 x093 x103 x113 x123
x004 x014 x024 x034 x044 x054 x064 x074 x084 x094 x104 x114 x124
x005 x015 x025 x035 x045 x055 x065 x075 x085 x095 x105 x115 x125
x006 x016 x026 x036 x046 x056 x066 x076 x086 x096 x106 x116 x126
x007 x017 x027 x037 x047 x057 x067 x077 x087 x097 x107 x117 x127
x008 x018 x028 x038 x048 x058 x068 x078 x088 x098 x108 x118
Чтобы изменить x
, просто изменитеPREFFIX
(по умолчаниюx
)(после имени файла):
split -a 3 -d -l 1024 list.lst ''
Который будет называть файлы 000
. Чтобы получить завершающий .lst
, добавьте параметр --additional-suffix='.lst'
, короче говоря, используйте этот:
split --additional-suffix='.lst' -da3 -l 1024 list.lst ''
Если вам нужно, чтобы начальное числовое значение было 001
, используйте:
split --additional-suffix='.lst' --numeric-suffixes=1 -a 3 -l 1024 list.lst ''
Но нет, невозможно получить числовые значения, такие как 1,2,3,...,21,..,107 без переименования.
Переименование может решить все проблемы в два этапа с помощью простого цикла:
split -l 1024 -d -a 8 list.lst
for f in x[0-9]*; do
mv "$f" "$((10#${f#x}+1)).lst"
done
Более технический термин для того, что вы называете «словом», — «подкоманда». Довольно часто интерфейс командной строки проектируется как команда с несколькими подкомандами, каждая из которых имеет собственный набор параметров. Иногда подкоманды имеют свои собственные подкоманды. git — один из таких примеров:
git remote add -f -t "$BRANCH_NAME" "$REMOTE_NAME" "git://example.com/repo"
Одна из причин разделения CLI на подкоманды состоит в том, чтобы подчеркнуть, что он может выполнять несколько различных связанных действий. dnf
можно install
пакеты, remove
пакеты, upgrade
пакеты, search
для пакетов, показать info
о пакете и т.д. Все совсем разные действия. Многие из этих действий имеют дополнительные ручки, которые вы можете настроить, и выбор, который вы можете сделать с помощью опций.
Другая причина использования подкоманд заключается в том, что подкоманда предоставляет пространство имен для опций:--all
в dnf list --all
означает совершенно другое, чем --all
вdnf search --all
Еще одна причина для разделения большого CLI на подкоманды — это документация. Представьте, если бы в git не было подкоманд. Все руководство по git будет состоять из одной ооооооооооооооооооооооооолнной страницы, подробно описывающей все опции, которые есть у git, и отношения между ними. Также :запустите git commit --help
-, вы увидите страницу справки, относящуюся к подкоманде commit
. Также :установите tldr и запустите tldr git commit
-, вы получите шпаргалку, относящуюся к подкоманде commit
.
Еще одно соображение состоит в том, что вы не должны не использовать подкоманды, если вы хотите разрешить комбинирование режимов работы, которые они позволяют комбинировать. Вы можете указать несколько параметров в одном вызове команды, но вы можете указать только одну подкоманду.