2015-10-08 6 views
0

У меня есть каталог с почти 2000 изображениями, а некоторые из них не имеют правильного расширения. И эти расширения форматируются следующим образом: *.images(xxx) 1. Можно ли изменить расширение на jpgПереименование файла и изменение расширения

UPDATE У меня есть этот код, но он не включает расширение.

declare -i i=0; 
for f in *; 
    do 
     fn=$i".${f##*.jpg}"; 
     mv "$f" "/home/vianney/Desktop/IPIP/$fn"; 
     i=$((i+1)); 
    done 
clear 

Как я могу изменить этот код для отображения FILETYPE

+2

Команды, называемые 'rename' и' prename', которые могут быть доступны на вашем компьютере - один или оба. Попробуйте 'prename --help' и' rename --help' и посмотрите, что делать. –

ответ

3

Это может быть сделано с помощью for цикла:

#!/bin/sh 

for i in * 
do mv "${i}" "${i%.*}.jpg" 
done 

Чтобы расширить немного по вопросам, затронутым в комментариях ниже; вот вариация на программу, которая добавляет последовательный числовой суффикс к файлам, как они обрабатываются:

#!/bin/sh 

count=0 
for i in *.* 
do mv "${i}" "${i%.*}.${count}.jpg" 
    count=$((count + 1)) 
done 
+0

Как я могу настроить его, чтобы изменить расширение '.images (num)' Спасибо –

+0

Как somefile.images или somefile.images999? –

+0

Он уже изменяет расширение, используя оператор обработки подстроки параметров оболочки '%' как $ {var% pattern}. –

0

Я бы пойти с mv и Баш Oneliner: for file in *.images*; do mv "$file" "${file/\.*/\.jpg}"; done;

Позвольте мне знать, если это поможет вам ?

+0

Как я мог настроить его так, чтобы имя файла было последовательным? 0, 1, 2, 3, ..., n-1 –

+0

Попробуйте следующее: 'n = 1; для файла в * .images *; make mv "$ file" "$ {file /\.*/$ n \ .jpg}"; п = $ ((п + 1)); done; ' – grimsock

+0

Решает ли ваша проблема? – grimsock

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