Чтобы заменить пробелы на символы_подчёркивания с помощью 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); }}В общем, довольно простое решение.