2015-04-01 5 views
0

на Mac (OS X) У меня есть каталог с большим количеством изображений, названных так:Использование регулярных выражений для получения части имени файла

IMG_250x333_1.jpg 
IMG_250x333_2.jpg 
IMG_250x333_3.jpg 
... 

Мне нужно переименовать все из них:

IMG_1.jpg 
IMG_2.jpg 
IMG_3.jpg 
... 

Я думаю, что использование командной строки UNIX с «mv» и своего рода регулярное выражение выполнит эту работу, но я не знаю, как это сделать! Кто-то может помочь?

Спасибо!

ответ

0

Вот подход, который я люблю:

ls | sed 's/\(.*\)250x333_\(.*\)/mv "&" "\1\2"/' | sh 
  • Список файлов с ls.
  • Затем преобразуйте имена файлов с помощью sed и сгенерируйте команду mv. Обратите внимание, что команда & в команде sed выводит полную входную строку.
  • Наконец, оценить mv команды с sh

Хорошей вещью об этом подходе является то вы можете удалить | sh и проверить, что ваше регулярное выражение является правильным.

+0

Большое вам спасибо за ответ! Я просто понял, что файлы в одном из моих каталогов имеют пробел в имени между подчеркиванием и «250», например: «IMG_ 250x333_1.jpg». Как тогда будет регулярное выражение? Еще раз спасибо!! – user3704589

+0

Привет! Я выполнил командную строку без «sh», как вы упомянули, просто для проверки вывода. Но на выходе я получаю все оригинальное имя, например «IMG_250x333_1.jpg». И когда я использую «sh», я получаю сообщение об ошибке «sh: строка 1: IMG_250x333-10.jpg: команда не найдена». Я что-то делаю неправильно? – user3704589

+0

Я добавил цитаты в команду 'sed' replace для обработки пробелов в именах файлов/каталогов. Если он все еще не работает, можете ли вы вставить результат? – joemfb

1

Что произойдет, если есть IMG_111x333_1.jpg, а также IMG_444x222_1.jpg? Вы рискуете коверкая/перезапись что-то ...

Но если это то, что вы хотите, вы можете сделать это следующим образом:

#!/bin/bash 
for f in *.jpg; do 
    new=${f/_*_/_} 
    echo mv "$f" $new 
done 

Если вам нравится то, что он делает, удалить слово echo.

+0

Хороший вопрос! У меня действительно есть несколько каталогов для каждого размера изображения, и я подумал, что возьму скрипт оболочки и адаптирую его из-за номера пикселя в имени файла. Но если есть общий способ устранения чисел из имени файла, я счастлив! Спасибо за помощь!! – user3704589

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

  • Нет связанных вопросов^_^