Переименование нескольких файлов с помощью awk

Чтобы заменить пробелы на символы_подчёркивания с помощью awk, немножко поэкспериментировав, я нашёл следующий способ:

$ ls -1 | awk '{ newfn = $0; if(gsub(" ", "_", newfn)>0) { system("mv \"" $0 "\" " newfn) } }'

Рассмотрим эту команду подробнее. Команда

$ ls -1

перечисляет файлы текущей папки в виде одна строка - один файл. Поскольку awk обрабатывает поток ввода построчно, то это то, что нужно в данном случае.

Полученный поток я направляю на вход awk, а в качестве программы использую следующий алгоритм:

{
    // переменная newfn будет хранить новое имя файла         
    newfn = $0;
    // пробелы заменяются на символы_подчёркивания
    n = gsub(" ", "_", newfn);
    // если подобная замена была проведена, то...
    if(n > 0)
    {
        // выполнить для этого файла переименование
        // старое имя файла при этом берётся в кавычки
        system("mv \"" $0 "\" " newfn);
    }
}

В общем, довольно простое решение.