linux-generic-lts-utopic зависит от 3.16.0-30. Если удалить 3.16.0-30, apt-get установит 3.16.0-50 в качестве зависимости, чтобы заменить 3.16.0-30. Таким образом, удаление linux-generic-lts-utopic первым удалит все зависимости и позволит очистить все 3.16.
Сzsh
:
#! /bin/zsh -
typeset -Z3 page
files=(image-<0-3900>.jpg)
for ((page = 1; $#files; page++)) {
convert $files[1,13] -append./Merged/page_$page.jpg
files[1,13]=()
}
Обратите внимание, что поскольку имеется 3901 изображение (13 × 300 + 1 ), на последней странице будет только одно изображение.
Вы можете сделать что-то подобное с bash
, например:
#! /bin/bash -
shopt -s extglob
shopt -s failglob
set -- image-+([[:digit:]]).jpg
for ((page = 1; $#; page++)) {
printf -v padded_page %03d "$page"
convert "${@:1:13}" -append "./Merged/page_$padded_page.jpg"
(($# > 13)) || break
shift 13
}
POSIXly, при условии, что есть совпадающие файлы и еще менее тщательная проверка имен файлов:
#! /bin/sh -
set -- image-*.jpg
# disable split+glob, only retain empty removal on unquoted expansions:
set -o noglob; IFS=
page=1; while [ "$#" -gt 0 ]; do
padded_page=000$page
padded_page=${padded_page#"${padded_page%???}"}
convert $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} \
-append "./Merged/page_$padded_page.jpg"
[ "$#" -gt 13 ] || break
shift 13
page=$((page + 1))
done
Обратите внимание, что хотя здесь имена файлов очень простые (без пробелов, специальных символов... ), в этих кодах особое внимание уделено обработке произвольных символов. Однако обратите внимание, что convert
и другие утилиты imagemagick могут иметь проблемы с именами файлов, начинающимися с -
(, даже при использовании--
)или содержащих :
, поэтому лучше всего добавлять к путям файлов префикс ./
, чтобы избежать этих проблем (. ] например, используйте ./*.jpg
вместо*.jpg
).
Допустим, у вас есть эти файлы в непрерывном диапазоне от image-0000.jpg
до image-2999.jpg
. Это должно продемонстрировать принцип работы здесь:
#!/bin/bash
for page in {000..001}; do
echo image-${page}{0..9}.jpg
done
Итак, бросьте это в свой -кейс:
#!/bin/bash
for page in {000..001}; do
convert image-${page}{0..9}.jpg --append./Merged/page-${page}.jpg
done
Обратите внимание, что {01..02}
расширение до01
02
вместо1
2
требует bash
4.
Вы можете сделать это, используя аргументxargs
-n
и передать результат в цикл while
read
.
page=1
while IFS= read -r row; do
convert $row -append./Merged/page_$page.jpg
page=$((page + 1))
done < <(echo image-{0000..3900}.jpg | xargs -n13)