Бит setgid для файлов не имеет ничего общего с каталогами. Бит setgid в вашем примере означает, что исполняемый файл hoststat
запускается с идентификатором группы, установленным на I'd группы mail
, предположительно потому, что ему требуется контролируемый доступ к файлам или каталогам, принадлежащим группе mail
.
Попробуйте это
awk 'FNR==2 {print ("python2 script.py " FILENAME " 1 5.732436 " $1 " f" FILENAME " n")}' *.b
Поскольку вы уже используете awk
, делайте это с помощью awk
, а не в цикле оболочки (вызов awk
в таком цикле медленный и ненужный):
awk 'FNR == 2 {
printf "python2 script.py %s 1 5.732436 %s f%s n\n", FILENAME, $1, FILENAME
}' *.b
Это вызывает awk
со всеми вашими файлами .b
в качестве входных данных. Для второй строки каждого файла он выведет желаемый вывод на стандартный вывод, взяв данные из первого поля текущего входного файла.
FILENAME
— это специальная переменная в awk
, которая содержит имя текущего входного файла. Аналогично, FNR
— номер текущей записи (номер строки )в текущем файле.
Если вы используете GNUawk
(скорее всего в системе Linux )и ваши файлы очень большие, вы можете немного ускорить процесс, вызвав nextfile
после печати. Это приведет к немедленному переходу к следующему входному файлу, без дальнейшего чтения текущего файла.
awk 'FNR == 2 {
printf "python2 script.py %s 1 5.732436 %s f%s n\n", FILENAME, $1, FILENAME
nextfile
}' *.b
nextfile
также поддерживается mawk
.