Скрипт с командами split & cat

Я хочу разделить файл image.jpg на части и объединить его снова. Я использовал следующие команды:

split -b 1440 image.jpg # It divides it into 6 parts.
cat xaa.jpg xab.jpg xac.jpg xad.jpg xae.jpg xaf.jpg > new-image.jpg 

Теперь я хочу скрипт, который выполняет ту же работу, что и предыдущие команды.

1 ответ

Как насчет этого:

#!/bin/bash

# test whether first argument exists and is a regular file, if not exit
[ -f "$1" ] || exit 1

# put 1440 bytes per output file
split -b 1440 "$1" "$1". &&

# merge files again
cat "$1".* >"${1%/*}/new-${1##*/}"

Сценарий начинается с шебанга, определяющего программу, с которой он должен быть запущен, в данном случае это /bin/bash, Сначала мы проверяем, чтобы первый аргумент скрипта был обычным файлом, и завершаем работу, если это не так. split Команда разбивает файл, указанный в качестве первого аргумента, и создает выходные файлы, такие как image.jpg.aa для файла image.jpg, Только если split успешно завершен, cat Команда объединяет их снова, используя bash 'Pathname Expansion и Parameter Expansion' и сохраняет вывод (т.е. объединенный файл) как new-image.jpg для файла image.jpg,

Сохраните этот скрипт как splitmerge.bash, сделайте его исполняемым с chmod +x splitmerge.bash и запустить его с:

splitmerge.bash image.jpg

Все выходные файлы создаются в каталоге входного файла независимо от вашего текущего каталога. Если скрипт и / или файл для разделения не находится в вашем текущем каталоге, используйте вместо этого абсолютные пути, например:

~/scripts/splitmerge.bash /home/thmk/test/image.jpg
Другие вопросы по тегам