“CAT” случайный файл в терминале

Я хотел бы создать сценарий удара, который позволяет мне отображать файл с помощью "кошки". Вещь состоит в том, что отображение простого файла легко даже для меня, но я хотел бы случайным образом отобразить файл в папке в моем терминале так, чтобы каждый раз я открылся один, существует случайный отображенный файл.

Кто-то мог помочь мне?

править: те файлы являются просто изображениями, сделанными из символов ASCII, их размер о 2-3ko

0
задан 15 November 2016 в 15:42

2 ответа

Это - Ваши похороны... Я не беру на себя ответственности за то, что это сделает к Вашему терминалу (необходимо удостовериться, что нет никаких двоичных файлов в каталоге), ни сколько дерьма покажут в нем. Если Вы действительно хотите сделать это, можно использовать (с благодарностью для @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[@]}]}"
5
ответ дан 28 September 2019 в 04:29

Я соглашаюсь с terdon, что это - Ваши похороны, но позвольте ему не быть сказанным, что мы препятствовали тому, чтобы Вы завинтили себя несколькими способами:

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

Что это делает?

  • find -print0, shuf -z и xargs -0 все объединение для контакта с NUL-разграниченным входом. Это и / единственные символы, не позволенные в именах файлов, таким образом, это является самым безопасным для раздавания имен файлов и путей.
  • find произведет список всех файлов (рекурсивно) в /some/path.
  • shuf переставит входные строки и произведет точно одну строку (-n1).
  • xargs cat будет затем использовать ту одну строку в качестве аргумента cat.
3
ответ дан 28 September 2019 в 04:29

Другие вопросы по тегам:

Похожие вопросы: