как установить новую тему KDE?

Подход с чистой оболочкой:

files=(*); 
num=$((${#files[@]}/8));
k=1
for ((i=0; i<${#files[@]}; i+=$num)); do 
    tar cvzf files$k.tgz -- "${files[@]:$i:$num}"
    ((k++))
done

Объяснение

files=(*): сохранить список файлов (также есть каталоги, если они есть, изменить на files=(*.txt), чтобы получить только объекты с расширением txt) в массиве $files. num=$((${#files[@]}/8));: ${#files[@]} - количество элементов в массиве $files. [F9] - это байт (ограниченный) способ выполнения арифметики. Таким образом, эта команда устанавливает $num количество файлов, деленное на 8. k=1: просто счетчик, чтобы назвать архив. for ((i=0; i<${#files[@]}; i+=$num)); do: итерация по значениям массива. $i инициализируется в 0 (первый элемент массива) и увеличивается на $num. Это продолжается до тех пор, пока мы не рассмотрим все элементы (файлы). tar cvzf files$i.tgz -- ${files[@]:$i:$num}: в bash вы можете получить срез массива (часть массива) с помощью ${array[@]:start:length}, поэтому ${array[@]:2:3} вернет три элемента, начиная со второго. Здесь мы берем срез, который начинается с текущего значения $i и является $num элементами долго. [F21] необходим, если любое из ваших имен файлов может начинаться с -. ((k++)): increment $k
4
задан 8 May 2012 в 19:29

0 ответов

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

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