Вот очень простая однострочная Awk для достижения этой цели:
awk -F. '{$0=FILENAME; printf $NF" "; nextfile}' /some/dir/prefix*
По сути, это делает следующее:
-F.
: установите разделитель поля FS
на .
. Таким образом, $NF
представляет расширение.
$0=FILENAME
: игнорировать текущую запись и установить ее на FILENAME
, обработать все таким образом.
print $NF; nextfile
: распечатать расширение и перейти к следующему файлу.
Проблема в том, что файл все еще читает запись текущего файла. Если этот файл пуст, это не удастся.
Чтобы это работало с пустыми файлами, вы можете использовать расширение gawk
BEGINFILE
awk -F. 'BEGINFILE{$0=FILENAME; printf $NF" "; nextfile}' /some/dir/prefix*
Или вы можете перебрать все аргументы:
awk -F. 'BEGIN{for(i in ARGV){$0=ARGV[i]; printf $NF" "};exit}' /some/dir/prefix*