3

Это сбило меня с толку - я на самом деле пытаюсь выполнить настраиваемое действие Thunar, чтобы скопировать выбранный файл в тот же каталог, добавив число перед расширением, например

cp file.ext file_1.ext

Кажется, что некоторые команды делают это автоматически, как mogrify -format (за исключением, очевидно, изменений в расширении).

Например, я хотел бы скопировать файл изображения, чтобы я мог mogrify -resize копии (которая будет перезаписана).

2 ответа2

3

Обычный способ сделать это в bash - это расширение параметров. Если переменная file содержит имя файла, сделайте что-то вроде этого:

name=${file%.*}
extension=${file##*.}
i=1
new_file="${name}_${i}.${extension}

cp "$file" "$new_file"

Чтобы использовать это в скрипте (скажем, duplicate.sh ), сделайте что-то вроде этого:

#!/bin/bash

name=${1%.*}
extension=${1##*.}
infix="${2:-_1}"

cp -v "$1" "${name}${infix}.${extension}"

Тогда назовите это как:

duplicate.sh FILE INFIX
1

Это всего лишь несколько более короткая версия ответа @ Thor:

name=${file%.*}
extension=${file##*.}

cp "$name"{,_1}."$extension"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .