如何生成空文件并从输入文本文件中随机获取名称?

如何生成空文件并从输入文本文件中随机获取名称?

我想要生成 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

相关内容