Как выбрать случайный файл из каталога? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть каталог, полный случайных файлов. Некоторые из них являются картинками и заканчиваются расширением .png. Я хочу создать bash скрипт, который удаляет случайное .png изображение каждый раз, когда я его запускаю. Как мне это сделать? Пожалуйста, объясните свой ответ (или поставьте соответствующие ссылки), так как я начинающий.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

используйте команду shuf для создания случайного перемешивания и head -1 для выбора верхнего

ls -1 *.png |  shuf | head -1

или

ls -1 *.png | shuf -n 1
0 голосов
/ 18 апреля 2020

Использование только bash встроенных файлов для выбора файла:

#!/usr/bin/env bash

shopt -s nullglob
files=(*.png)
shopt -u nullglob
if [[ ${#files[@]} -eq 0 ]]; then
  echo "No matching files!"
  exit
fi
file=${files[$((RANDOM % ${#files[@]}))]}
echo "Deleting $file"
rm -f "$file"

Добавляет все соответствующие файлы в массив (см. Как назначить ls для массива в linux bash), а затем выбирает случайное из него, используя переменную $RANDOM (которая оценивает новое случайное целое число каждый раз, когда оно появляется) и некоторую математику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...