предпочтенная острота, не намереваясь записать целый автономный сценарий только для этого
Когда вещи становятся настолько сложными, я не вижу оснований для не записи сценария. Вы никогда не собираетесь помнить, как сделать это от одного выполнения до следующего, таким образом, Вы собираетесь закончить или переосмысление его каждый раз или оборачивание его в сценарии так или иначе.
Для мелочи как это я обычно начинаю пытаться решить его в Bash:
#!/bin/bash
if [ -z "$1" ] ; then echo Need arguments. ; exit 1 ; fi
typeset -i i=1
for f in "$*"
do
tailbits=`echo "$f" | sed -e 's/^[0-9]+//'`
mv "$f" sertmp-`printf %02d $i`"$tailbits"
i=i+1
done
for f in "sertmp-*"
do
mv "$f" `echo "$f" | sed -e s/^sertmp-//`
done
В основном этот сценарий снимает изоляцию с любых ведущих цифр, затем помещает дополненное нулем порядковое число увеличения на переднюю сторону с файлами, пронумерованными согласно порядку, Вы передаете их сценарию.
Это делает это на двух этапах, с sertmp-
префиксы для первичной обработки для предотвращения любого риска коллизий имени. Если Вы называете этот сценарий mp3-renamer
и назовите его как:
$ mp3-renamer 01-foo.mp3 03-bar.mp3 04-qux.mp3
Вы сталкиваетесь с тривиальной коллизией на первом, переименовывают, если Вы не используете 2 передачи, чтобы сделать переименование. (01-foo.mp3
-> 01-foo.mp3
.)
Если Вы называете его как это, хотя:
$ mp3-renamer 02-foo.mp3 01-foo.mp3
Вы случайно стираетесь 01-foo.mp3
в первом переименовывают с 1 передачей, переименовывают.
Если бы проблема становится более сложной, я переписал бы ее в Perl. В той точке Вы могли затем использовать хеш, чтобы содержать старое-> новое отображение имени и использовать немного умного кода для разработки надлежащего порядка сделать переименования для предотвращения потребности в 2 передачах.
Казалось бы, что существует bz2module.c, который идет с источником Python 2.4, но, кажется, не компилируется по умолчанию и нет ничего в Модулях/Установке для него. Вероятно, потому что пакет разработки для bz2 не установлен по умолчанию. Попытайтесь найти bzlib.h файл в своей системе:
$ find /usr/include -name bzlib.h
Если это не существует, то установите соответствующий пакет библиотеки (libbz2-dev на Debian/Ubuntu).
После той попытки, добавляющей следующее к Modules/Setup.local и затем перекомпилировавшей python 2.4.
bz2 bz2module.c
make
:libpython2.4.a(bz2module.o): In function 'BZ2Decomp_decompress': /home/incoming/Python-2.4.2/./Modules/bz2module.c:1841: undefined reference to 'BZ2_bzDecompress'
какая-либо идея? – ftkg 16.10.2013, 18:20