bash – 从shell脚本中的目录中选择随机文件的最佳方法
发布时间:2020-12-15 16:18:22 所属栏目:安全 来源:网络整理
导读:从shell脚本中的目录中选择一个随机文件的最好方法是什么? 这里是我在Bash的解决方案,但我会非常感兴趣的一个更便携的(非GNU)版本在Unix适当使用。 dir='some/directory'file=`/bin/ls -1 "$dir" | sort --random-sort | head -1`path=`readlink --canonic
从shell脚本中的目录中选择一个随机文件的最好方法是什么?
这里是我在Bash的解决方案,但我会非常感兴趣的一个更便携的(非GNU)版本在Unix适当使用。 dir='some/directory' file=`/bin/ls -1 "$dir" | sort --random-sort | head -1` path=`readlink --canonicalize "$dir/$file"` # Converts to full path echo "The randomly-selected file is: $path" 任何人有任何其他想法? 编辑:lhunath是关于解析ls的好点。我想这是由于是否你想要便携或不。如果你有GNU findutils和coreutils,那么你可以做: find "$dir" -maxdepth 1 -mindepth 1 -type f -print0 | sort --zero-terminated --random-sort | sed 's/d000.*//g/' 哇,那很有趣!它也匹配我的问题更好,因为我说“随机文件”。 Honsetly虽然,这些天很难想象一个Unix系统部署有安装GNU但不是Perl 5。 files=(/my/dir/*) printf "%sn" "${files[RANDOM % ${#files[@]}]}" 并且不解析ls。阅读http://mywiki.wooledge.org/ParsingLs 编辑:祝你好运找到一个非bash解决方案是可靠的。大多数会破坏某些类型的文件名,例如带空格或换行符或破折号的文件名(在纯sh中几乎不可能)。要做到正确没有bash,你需要完全迁移到awk / perl / python / …没有管道输出进一步处理等。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |