Существует экранная команда, чтобы сделать это. Из руководства:
Команда: sessionname [имя]
(ни один)
Переименуйте текущую сессию. Отметьте это
screen -list
имя обнаруживается с предварительно ожидаемым идентификатором процесса. Если имя аргумента опущено, название этой сессии отображено.Внимание:
$STY
переменная среды все еще отражает старое название. Это может привести к беспорядку. Значение по умолчанию создается из tty и имен хостов.
Для доступа к экранной командной строке используйте Префикс: где Префикс обычно является Ctrl-a.
Таким образом, необходимо будет, скорее всего, сделать так: Ctrl-a:sessionname [name]
С FreeBSD / Mac OS X find
, stat
и awk
(не точно удобная острота, хотя):
find -x . -type f -maxdepth 1 -exec sh -c 'stat -f '%z' "${@}"' _ '{}' + |
LC_ALL=C awk -v pwd="${PWD}" '
BEGIN{ sum=0; count=0; }
{ sum+=$1; ++count; }
END{
if (count == 0) exit;
printf ("number of files: %d\n", count);
printf ("average file size in B: %.5f\n", sum/count);
printf ("average file size in KB: %.5f\n", (sum/count) / 1024);
printf ("average file size in MB: %.5f\n", (sum/count) / (1024*1024));
printf ("directory: %s\n", pwd);
}
'
С GNU найдите:
find . -type f -printf '%s\n' | awk '{s+=$0}
END {printf "Count: %u\nAverage size: %.2f\n", NR, s/NR}'
Или для использования диска:
find . -type f -printf '%k\n' | awk '{s+=$0}
END {printf "Count: %u\nAverage size: %.2f\n", NR, s*1024/NR}'
Обратите внимание что, если существует несколько hardlinks того же файла там, который будет считать его использование диска несколькими временами.
Вышеупомянутое только считает регулярные файлы, не символьные ссылки или каталоги или другие специальные файлы. Это включает скрытые файлы.
То же с zsh
builtins:
zmodload -i zsh/stat
count() {zstat -Hs -- $REPLY; ((size+=$s[size], count++, 0))}
size=0 count=0
**/*(oNDN.+count)
print -f "Count: %s\nAverage size: %.2f\n" $count $(($size./count))
Упрощенное решение в одной строке:
ls -Rl -- "$DIR" | awk 'BEGIN{sum=0;count=0};/^-/{sum+=$5;++count};END{print sum/count}'
Это имеет синтаксический обман в нем, только рассматривая ls
выходные строки, которые начинаются с '-', который должен, составляют данные для регулярных файлов.
только для файлов в каталоге, игнорируя подкаталоги:
expr $(du -Ss | cut -f1) / $(find /path/to/dir -maxdepth 1 -type f | wc -l)
Или считать все файлы включая файлы в подкаталогах:
expr $(du -s | cut -f1) / $(find /path/to/dir -type f | wc -l)
du -s
сложит использование диска (не размер) всех файлов и каталогов и других нерегулярных файлов, исключая дополнительные жесткие ссылки на тот же файл, в то время как find
будет считать все регулярные файлы. Кроме того, имена файлов с символами новой строки будут несколько раз считаться. du -S
конкретный GNU. du -s
сообщат секторы или килобайты в зависимости от ОС.
– Stéphane Chazelas
01.02.2013, 19:20
-v var=value
,awk
развернет ANSI C последовательности как\n
,\r
... В то время как оболочки действительно экспортируютPWD
, таким образом, можно использоватьENVIRON["PWD"]
вawk
который не имеет такой проблемы для каталогов, имеющих обратные косые черты на их имя. – Stéphane Chazelas 02.02.2013, 19:58find . -type f -exec stat -f%z {} +|awk '{s+=$0}END{print s/NR}'
. – Lri 29.04.2014, 11:55