创建一个简单的脚本,重命名从一组文件中随机选取的文件

Ern*_*dez 2 bash scripts

这个想法是在 KDE 启动期间播放“问候”声音文件。

例如,在一个文件夹中,将有 10 个音频文件。比方说,命名1.ogg 2.ogg 3.ogg等。

实际播放的文件称为greetings.ogg.

如何随机获取这些文件之一并将其重命名为greetings.ogg不丢失 10 个原始文件?

我尽力了,但我失败了。

wal*_*tor 8

您不能“重命名”文件和“不丢失原始文件”,您必须将 ( man cp) 随机选择的原始文件复制到greetings.ogg,例如:

# select among 0.ogg .. 9.ogg
cp $(( $RANDOM % 10 )).ogg greetings.ogg
Run Code Online (Sandbox Code Playgroud)

阅读man bash,您可能想要初始化$RANDOM


ste*_*ver 5

如果您的文件不一定使用适合使用 shell$RANDOM变量的简单算术方案命名,那么另一种选择是使用shuf

shopt -s extglob

cp -- "$(printf '%s\n' !(greeting).ogg | shuf -n 1)" greeting.ogg
Run Code Online (Sandbox Code Playgroud)

ksh 样式的扩展 glob!(greeting).ogg避免将现有文件复制到自身 - 您可以通过将文件复制到其他目录来避免这种情况。