Попробуйте в один шаг:
md5sum * | awk 'NR==FNR {FN[$1] = $2; next} {print "mv -v \"" $2 "\" \"" FN[$1] "\""}' md5file -
Это создает сигнатуру md5sum для каждого файла в вашем рабочем каталоге, передает ее в скрипт awk
, который считывает «старые» имена файлов из старого файла md5 в массив, индексированный сигнатурой, а затем считывает фактические имена файлов. со стандартного ввода (-
, канал )и выводит соответствующую команду mv
на стандартный вывод. Передайте это в оболочку (| sh
), если вас устраивает то, что предлагается.
В вашем коде используется ,
для разделения двух инструкций. Вам нужно ;
вместо:
$ awk 'BEGIN{RS="\n\n"; FS="\n";} {print $1,$2,$3,$4,$5}' file
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37 65
Edwin 2537 78 67 45
Dayan 2415 30 47 20