LINUX.ORG.RU

Замена файла случайным из каталога

 


0

2

Приветствую, уважаемые! Появилась задача на сервере (Centos) по крону заменять текстовый файл случайным из указанной папки. Вероятно, надо запускать скрипт на BASH, но в командах функцию рандом не нашел. Так же поиск по форуму не принес результата. Понимаю, что для знатоков это ерундовое дело, но я к таким не отношусь. Нужна ваша помощь.


(info "(bash) Bash Variables")

поиск по форуму не принес результата

А по прилагающейся документации?

'RANDOM'
     Each time this parameter is referenced, a random integer between 0
     and 32767 is generated.  Assigning a value to this variable seeds
     the random number generator.

— (info "(bash) Bash Variables")

Zmicier ★★★★★
()
Ответ на: комментарий от kostik87

Пока получилось в таком виде

#!/bin/bash
#Copy file
pf=/home/user/download/pantxt
tf=/home/user/download/last/cremo.txt
randf= ls $pf | shuf -i n1
cp -i $randf $tf
Правильно?

Promka
() автор топика

Команда сортировки строк sort легко преобразуется в команду рандомизации ключем -R. Например:

$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
e
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
a
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
d
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
d
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
b
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
e
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
b
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
a
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
f
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
f
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
e
$ printf "a\nb\nc\nd\ne\nf\n" | sort -R | head -1
a
Deleted
()
Ответ на: комментарий от legolegs

Имена копируемых файлов в папке не повторяются. Имеют такой вид: blabla01.txt,blabla02.txt,blabla03.txt... В папке их около полутысячи.

Promka
() автор топика
Ответ на: комментарий от Deleted

В таком варианте правильно?

#!/bin/bash
#Copy file
pf=/home/user/download/pantxt
tf=/home/user/download/last/cremo.txt
cp -i "$(ls $pf | sort -R |head -n1)" $tf

Promka
() автор топика
Ответ на: комментарий от Promka

Имена копируемых файлов в папке не повторяются

Конечно, блин, они не повторяются! Это так по определению папки^W директории. Файлы, которые выбраны случайно могут потом снова выпадать? Ответь для себя на этот вопрос.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от legolegs

Должно заменяться содержимое адресного файла на содержимое копируемого.

Promka
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.