В Linux split -d можно использовать как числовые суффиксы, начинающиеся с 0, как если бы

split -d -l 1500 ${TEMP_FILE} ${OUTPUT_FILE}
    mv "${DATADIR}/${DATASET}/user_artists00" "${DATADIR}/${DATASET}/user_artists.train"
    mv "${DATADIR}/${DATASET}/user_artists01" "${DATADIR}/${DATASET}/user_artists.test"

Но в macOS опция -d отсутствует. По словам человека, у нас есть

 -a suffix_length
             Use suffix_length letters to form the suffix of the file name.

И сказано

Если указаны дополнительные аргументы, первый используется как имя входного файла, который необходимо разделить. Если указан второй дополнительный аргумент, он используется в качестве префикса для имен файлов, на которые он разбит. В этом случае каждому файлу, на который он разделен, присваивается имя по префиксу, за которым следует лексически упорядоченный суффикс с использованием символов суффикс_длина в диапазоне от a до z. Если -a не указано, в качестве суффикса используются две буквы.

Поэтому, насколько я понимаю, у меня не может быть в качестве выходного файла что-то вроде $ MYINPUT00, $ MYINPUT01 и т. д., а по умолчанию только xaa, xab и т. д., поскольку -a допускает только {{ X3}} диапазон.

1
loretoparisi 19 Сен 2018 в 16:25

2 ответа

Лучший ответ

MacOS split - это BSD split, который отличается от GNU split. -d является расширением GNU split. Таким образом, вы не можете использовать числовые суффиксы с BSD split.

Однако, если вы действительно хотите сделать это в macOS, вы можете написать простой дополнительный скрипт, чтобы он работал.

split -l "$linelimit" "$infile" "$prefix"
i=0
# to put "suffixlen" digits at the end
suffixlen=3
for file in "$prefix"*; do
    # to make 2 as 002 etc.
    suffix=$(printf "%0${suffixlen}d" $i)
    # actual renaming
    mv "$file" "$prefix$suffix"
    ((i++))
done
1
D. Jones 5 Апр 2019 в 10:17

Вы можете установить brew install coreutils с помощью Homebrew и вместо этого вызвать разделение GNU gsplit, чтобы использовать аргумент -d.

1
Zeynep Akkalyoncu Yilmaz 31 Июл 2019 в 20:32