2016-11-14 4 views
0

У меня есть имя файла в $ fich1, и я хочу добавить «(копию)» в конце с тем же расширением (но, возможно, у него нет расширения). Например, file1.txt в file1 (копия) .txt или IM1 к Im1 (копия) .Отель Единственное, что я могу думать о чем-то вроде этого:Изменить окончательное имя файла без изменения расширения

${fich1/./(copy).} 

Но этот путь, если файл не имеет расширение оно не будет работать.

ответ

1

Parameter Expansion могут быть использованы для извлечения имени и расширения (если таковой имеется), а затем сшить вместе, чтобы получить новую строку в соответствии с требованиями

$ f='file1.txt' 
$ name="${f%.*}" 
$ ext="${f#${f%.*}}" 
$ newname="${name}(copy)${ext}" 
$ echo "$newname" 
file1(copy).txt 

$ f='file1' 
$ name="${f%.*}" 
$ ext="${f#${f%.*}}" 
$ newname="${name}(copy)${ext}" 
$ echo "$newname" 
file1(copy) 


При использовании с mv командой:

$ f='file1.txt' 
$ mv -v "$f" "${f%.*}(copy)${f#${f%.*}}" 
'file1.txt' -> 'file1(copy).txt' 

$ f='file2' 
$ mv -v "$f" "${f%.*}(copy)${f#${f%.*}}" 
'file2' -> 'file2(copy)' 
+0

так, во втором, ext будет пустым, не так ли? –

+0

yup, он будет пустым – Sundeep

Смежные вопросы