Я хотел бы генерировать 20 (пустых) файлов, каждое именованное использование 10 символьных строк, выбранных случайным образом из файла "test.txt" (вручную, генерируют файл test.txt).
Как сделать эту задачу?
Принятие Вас уже имеет строки в test.txt
, и они - все 10 широких символов, и они - тот на строку:
shuf -n 20 test.txt | xargs touch
shuf
переставит содержание test.txt
и распечатайте первые 20 строк, затем xargs
возьмет тот вывод и преобразует его в аргументы в пользу touch
, который создаст файлы с помощью тех аргументов.
Используя просто удар, без любых внешних команд:
mapfile names < test.txt # save filenames in array
for ((i = 0; i < 20; i++)) # loop 20 times
do
ind=$((RANDOM % ${#names[@]})) # take random value less than length of array
> "${names[$ind]}" # redirection creates empty file
unset names[$ind] # remove used filename from array
names=( "${names[@]}" ) # recreate array to remove gaps
done