在终端中“Cat”一个随机文件

在终端中“Cat”一个随机文件

我想创建一个 bash 脚本,允许我使用“cat”显示文件。事实上,显示一个简单的文件对我来说很容易,但我想随机显示终端文件夹中的文件,以便每次打开一个文件时,都会显示一个随机文件。

有人能帮助我吗?

编辑:这些文件只是由 ASCII 字符组成的图像,其大小约为 2-3ko

答案1

这是你的葬礼。。。我对这会对你的终端造成什么影响不负任何责任(你需要确保目录中没有二进制文件),也不负责终端上会显示多少垃圾。如果你真的想这样做,你可以使用(感谢@DavidFoerster 和@muru 的改进):

#!/bin/bash
targetDir="/home/terdon/foo"
## Save the files in the array $files
files=( "$targetDir"/* )
## Cat a random file
cat "${files[RANDOM % ${#files[@]}]}"

答案2

我同意 terdon 的观点,这是你的葬礼,但我们别忘了,我们通过多种方式阻止了你搞砸自己:

find /some/path -type f -print0 | shuf -zn1 | xargs -0 cat

它有什么作用?

  • find-print0shuf都结合起来处理 NUL 分隔的输入。 和-zxargs文件名中唯一不允许使用的字符,因此它是传递文件名和路径最安全的方式。-0/
  • find将输出 (递归) 中的所有文件的列表/some/path
  • shuf将打乱输入行并输出一行(-n1)。
  • xargs cat然后将使用该行作为 的参数cat

相关内容