我想要生成 20 个文件(空),每个文件都使用从文件“test.txt”中随机选择的 10 个字符串命名(手动生成文件 test.txt)。
这个任务该如何做?
答案1
假设您已经有了字符串test.txt
,并且它们都是 10 个字符宽,并且每行一个:
shuf -n 20 test.txt | xargs touch
shuf
将对 的内容进行混洗test.txt
并打印前 20 行,然后xargs
将该输出转换为 的参数touch
,这将使用这些参数创建文件。
答案2
仅使用 bash,无需任何外部命令:
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