Если ваш rename
не поддерживает -N
, вы можете сделать что-то вроде этого:
ls -1 -c | xargs rename -n 's/.*/our $i; sprintf("%04d.jpg", $i++)/e'
Изменить Чтобы начать с заданного числа, вы можете использовать (несколько уродливые ) ниже, просто замените 123 номером, который вы хотите:
ls -1 -c | xargs rename -n 's/.*/our $i; if(!$i) { $i=123; } sprintf("%04d.jpg", $i++)/e'
Это упорядочивает файлы по времени создания (сначала сначала добавьте -r
в ls, чтобы отменить сортировку), а затем отправляет этот список файлов для переименования. Переименование использует Perl-код в регулярном выражении для форматирования и увеличения счетчика.
Однако, если вы имеете дело с изображениями JPEG с информацией EXIF, я бы рекомендовал exiftool
. Это из документации exiftool в разделе «Примеры переименования»
exiftool '-FileName
Я могу придумать несколько причин.
Я не знаю ни одного способа сделать неявное связывание исключительно с DLL - быстрый поиск выявил несколько инструментов, но я не использовал ни одного из них.
В этом случае я бы создал отдельный исходный файл с функциями, которые вам нужно использовать, и динамически загружал DLL и связывал их по мере необходимости. Например:
// using global variables and no-error handling for brevity.
HINSTANCE theDll = NULL;
typedef void (__stdcall * FooPtr)();
FooPtr pfnFoo = NULL;
INIT_ONCE initOnce;
BOOL CALLBACK BindDLL(PINIT_ONCE initOnce, PVOID parameter, PVOID context)
{
theDll = LoadLibrary();
pfnfoo = GetProcAddress(dll, "Foo");
return TRUE;
}
// Export for foo
void Foo()
{
// Use one-time init for thread-safe lazy initialization
InitOnceExecuteOnce(initOnce, BinDll, NULL, NULL)
pfnFoo();
}