Скрипт с командами 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