В настоящее время я использую простой скрипт для переименования:
for f in *.mp4; do
echo mv $f $RANDOM$RANDOM$RANDOM.mp4;
mv $f $RANDOM$RANDOM$RANDOM.mp4;
done
Но вместо того, чтобы использовать $random
, я хотел бы взять первые 2 буквы каждого слова.
Пример
перед переименованием:
having the best day.jpeg
Переименование рептера:
hathbeda.jpeg
Хорошо, немного сложнее :) Мои имена в основном есть. отделить слова. Возможно ли сделать это еще чем?
Можно сделать это использование сингла rename
команда (т.е. Вам не нужно bash
сценарий для этого, или можно использовать эту команду в Вашем bash
сценарий вместо for
цикл):
rename -n 's/(^| )([^ ]{1,2})[^ ]*/$2/g; s/$/.mp4/' *.mp4
Это будет просто подражать поведению echo mv [...]
, так, чтобы Вы видели результат, ничего на самом деле не переименовывая.
, Если результатом является ожидаемый, то выполненный:
rename 's/(^| )([^ ]{1,2})[^ ]*/$2/g; s/$/.mp4/' *.mp4
разбивка Команды :
rename
: переименовывает несколько файлов с помощью PCRE
s*.mp4
: переименовывает только файлы с расширением .mp4
разбивка Regex № 1 :
s
: выполняет замену /
: запускает regex(
: начинает группировать позволенные строки ^
: соответствует запуску строки |
: разделяет вторую позволенную строку
: соответствует
символ )
: остановки, группирующие позволенные строки (
: запускает вторую группу фиксации [^ ]{1,2}
: соответствия от 1 до 2 случаев любого символа не
)
: останавливает вторую группу фиксации [^ ]*
: соответствия любое количество символов не
/
: останавливается regex / запускает замену $2
: замены второй группой фиксации /
: останавливает замену g
: замены все происшествия шаблона в строке разбивка Regex № 2 :
s
: выполняет замену /
: запускает regex$
: соответствует концу строки /
: останавливается regex / запускает замену .mp4
: добавляет .mp4
строка /
: останавливает замену Используя python
:
#!/usr/bin/env python2
import glob, os
for filename in glob.glob('*.jpeg'):
first = filename.split('.')
second = first[0].split(' ')
name = ''
for i in range(0, len(second)):
name += second[i][:2]
os.rename(filename, name + '.' + first[1]
first
список, содержащий части имени файла splitted на .
(принятие Вас имеет только один .
в имени файла)
second
список, имеющий имя файла до .
splitted на пробелах.
Затем мы идем хотя содержание second
вынуть первые два символа из него и затем добавление их вместе для получения первой части нашего нового имени файла
Затем мы использовали os.rename
переименовать файл соответственно путем добавления .jpeg
в конце name
.
Также обратите внимание, что, целевой файл не должен существовать заранее, если он будет существовать, то он будет перезаписан.
Тест:
Прежде:
$ ls -1
foo.jpeg
having the best day.jpeg
hello kitty cat spam.jpeg
this is a doggy.jpeg
После:
$ ls -1
fo.jpeg
hathbeda.jpeg
hekicasp.jpeg
thisado.jpeg