2010-05-21 2 views
2

Мне нужно переименовать все файлы в каталоге. Некоторые примеры исходных имен файлов:Изменить - на. для всех файлов в каталоге

alpha--sometext.381928 
comp--moretext.7294058 

результирующих файлов будет переименован в:

alpha.sometext.381928 
comp.moretext.7294058 

Числа символов до и после - это не последовательны.

Сценарий должен работать с текущими установками Ubuntu и FreeBSD. Это бедные серверы LAMP, поэтому были установлены только необходимые пакеты.

Благодаря

ответ

4

Via Баш:

for file in *--*; do 
    mv "${file}" "${file/--/.}" 
done 

Магия в ${file/--/.}, которая является значение ${file} за исключением каждого "-" изменено на ""

+0

Nice one. Я пытался написать одну, но ты избил меня! – Josh

+0

Вы всегда должны указывать любую переменную, содержащую имена файлов. 'mv" $ {file} "" $ {file/- /.} "' –

+0

@DennisWilliamson - Я обновил свой ответ, но, если быть точным, вам нужно указать что-нибудь, что может иметь пробелы в них. –

4

В качестве альтернативы чистой оболочке вы можете использовать rename, стандартную утилиту, которая поставляется с Perl. Это более удобно для простых случаев.

rename 's/--/./' * 
+0

Это действительно здорово. Не знал этого. – tangens

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