2015-04-28 7 views
1

У меня есть список файлов:Массовое переименование группы файлов с звездочками (*) в наименовании к hashs (#)

file*1.ext 
fil*e2.ext 
fi*le3.ext 

Я хочу переименовать их, чтобы:

file#1.ext 
fil#e2.ext 
fi#le3.ext 

команда:

rename -v 's/\*/\#/' * 

дает мне:

Unknown option: 0 
Unknown option: 0 
Unknown option: 0 
Unknown option: 1 
Unknown option: 1 
Unknown option: 1 
Unknown option: 2 
Unknown option: 2 
Unknown option: 2 
Unknown option: 3 
Unknown option: 4 
Usage: rename [-v] [-n] [-f] perlexpr [filenames] 

Любая идея, что мне не хватает?

+0

Мой 'rename' отличается от вашей. Из какого пакета вы переименовываете? Это '/ usr/bin/rename'? –

+0

в моей системе ваша команда выполняется успешно как есть .. – anishsane

+0

Да ** Примечание: ** есть 2 ** совершенно разные ** 'переименовать' пакеты, которые существуют в вычислительном мире. Один довольно прочный, один минимальный. Подтвердите, какая версия у вас есть, прежде чем выбирать ее для использования. –

ответ

2

О, у меня есть другое распределение, имеющие свое переименование: Это должно работать:

rename 's/\*/#/' * 
+0

Другой пакет переименования должен работать с этим: 'rename '*' '#' *' –

0

Это будет работать по всей системе с Башем:

#!/bin/bash 
files=*.ext 
for file in $files; do 
file="${file:0:-4}" 
[[ "$file" == *"*"* && -f $file.ext && ! -L $file.ext ]] && 
newfile="${file//'*'/'#'}" && mv "$file.ext" "$newfile.ext" 
done 

Он будет игнорировать каталоги и символические ссылки ,

0

Пожалуйста, имейте в виду, что ничто (включая обратную косую черту) не сбрасывается в цитатах сиглей. Поэтому вам не следует добавлять обратную косую черту.

$ rename --version 
rename (util-linux-ng 2.17.2) 

$ ls 
file*1.ext fil*e2.ext fi*le3.ext 

$ rename '*' '#' * 

$ ls 
file#1.ext fil#e2.ext fi#le3.ext 
0

Это легко можно сделать с Баш замены подстроки:

for i in *\**; do mv "$i" "${i//\*/#}"; done 

Пример/Использование

$ ls -1 *\** 
fi*le3.ext 
fil*e2.ext 
file*1.ext 

$ for i in *\**; do mv "$i" "${i//\*/#}"; done 

$ ls -1 *\** 
ls: cannot access ***: No such file or directory 

$ ls -1 *#* 
fi#le3.ext 
fil#e2.ext 
file#1.ext 
Смежные вопросы