假设一个目录包含以下文件:
我正在寻找一种简单的方法来选择所有以 $LETTER 开头的文件,或者以字母表中晚于 $LETTER 的字母开头。可以轻松修改以查找以 $LETTER 开头的文件或以字母表中早于 $LETTER 的字母开头的文件的解决方案将很有用。
例如,在上面的列表中,使用 LETTER=c,我想选择“cfile、ffile、ffile2、qfile、zfile”
以上是一个简化的例子。在现实世界中,该目录将包含数千个文件。最后我使用ls | tail -n${FUDGE_FACTOR}了手动发现软糖因子的方法,但我正在寻找一种自动执行此操作的方法。
我正在寻找一个基于 shell 的解决方案(我使用 BASH,但欢迎使用其他 shell 中的解决方案)。我知道 shell 脚本可能不是执行此任务的最佳工具,但我纯粹是出于兴趣询问(以了解有关 shell 脚本的更多信息),因此请不要在 python/perl/lua/$ 中回复答案FAVE_SCRIPTING_LANGUAGE
对于此类任务的 shell 脚本限制以及在现实中解决这些限制的最佳方法(即没有我的“必须是基于 shell 的解决方案”的规定)的一般评论,将是最受欢迎的。
谢谢
其实很简单:
echo [$LETTER-z]*
Run Code Online (Sandbox Code Playgroud)
如果您想要区分大小写:
echo [$(echo "$LETTER" | tr a-z A-Z)-Z$LETTER-z]*
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为 shell在路径名扩展(即 globbing)之前执行参数扩展。