Описание тега insufficient-memory
Для awk и
подход:
найти [каталог] -тип F [различные другие варианты найти] |
на awk '{ориг=$0;
матч($0,/^.*\//,путь); суб("^"путь[0], "");
матч($0, /.[[^.]+$/,ВН); суб(ВН[0]"$", "");
("Эхо \"" $0 "\"|программы md5sum") | Гэтлину;
ком=ом("МВ \"%ы\" \"%ы%ы%ы\"", оригинальные, Р[0], $1, ВН[0]);
печати(ком)
}'
Современные найти
команды не требуется каталог для ввода .
предполагается, поэтому [каталог] может быть пустым. В -тип F
только находит файлы, что очень удобно, так как программы md5sum
не любят каталоги и изменить имя каталога во время работы, не очень хорошая идея. Использовать -имя_экземпляра узором
Если вы только хотите использовать некоторые файлы, например -имя_экземпляра \*.дат
, если дело важно, использовать имя
вместо -имя_экземпляра
.
На матч(...); подгруппы(...)
штук извлечение частей имени файла и заменить их в строке ввода. Обратите внимание, что "^"
и "$"
являются [пред/АП]в режиме ожидания для предотвращения замены строка, которая может повторить путь/расширение.
Заменить печати(ком)
с системой(ком)
на самом деле выполнить переименование.
Если вы хотите использовать программы md5sum
файла в качестве имени вы можете использовать тот факт, что программы md5sum
выдает сумму и ввод именем сделать что-то вроде:
найти -типа F -exec для программы md5sum '{}' ';' |
в то время как чтение файла суммы ; делать
[Эхо] файл MV "$" "`каталог $файл`/$сумма".расширения ;
сделано
В то время как читать сумма файл
будет занимать 2 аргументов, результаты программы md5sum
команду и назначить сумму
и файл
переменных с ними. Поскольку сумма
не должны иметь места в нем, читать
должно работать нормально.
Очевидно, что [Эхо]
должны быть удалены, когда на самом деле работает, но это всегда хорошая идея при тестировании каких-либо скриптовые изменения в тестовый поиск перед запуском.
Все это предполагает, что вы используете Баш
. Кроме того, это может быть введен как одна длинноватая строчка:
найти -имя_экземпляра \*.в JPG -exec для программы md5sum '{}' ';' | в то время как чтение файла sum ; сделать МВ "файл $" "`каталог файлов $`/$сумма".формат JPG ; сделано