ls | shuf -n $(( $(ls | wc -l) * 30 / 100))
Все, что вам нужно сделать, это найти количество файлов и процент отдельно. Для этого
$(ls | wc -l)
сначала подсчитает количество файлов в каталоге $(( x * 30 /100))
выполнит арифметическую операцию по нахождению 30% от этого числа shuf -n
для получения случайного списка файлов Самый старый PID с некоторым именем пользователя user
может быть получен
pgrep -U user -o
где -o
отвечает за возврат самого старого PID (см. руководство pgrep
).
Чтобы запустить это для всех пользователей, которые в данный момент вошли в систему:
users | tr ' ' '\n' |
while read user; do
printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done
При этом вызывается утилита users
, которая выводит в одной строке текущих пользователей, вошедших в систему. tr
изменяет пробелы между именами пользователей на новые строки, и цикл считывает их один за другим в переменную user
. Для каждого имени пользователя вызывается pgrep -U "$user" -o
. Вывод этого используется в качестве аргумента для printf
для форматирования результирующей строки для этого конкретного пользователя.
С оболочками, утилита read
которых может читать до разделителя с -d
(, например. zsh
и bash
), вы можете избавиться от tr
вот так:
users |
while read -d ' ' user; do
printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done