bash - 在名称以数字开头的目录中查找编号最高的文件名

标签 bash shell sed ls

我有一个包含如下文件的目录:

001_something.php  002_something_else.php
004_xyz.php        005_do_good_to_others.php

我最终想创建一个新的空 PHP 文件,其名称以系列中的下一个数字开头。

LIST=`exec ls $MY_DIR | sed 's/\([0-9]\+\).*/\1/g' | tr '\n' ' '`

前面的代码给我一个这样的字符串:

LIST='001 002 004 005 '

我想获取 005,加一,然后使用该数字生成新文件名。我如何在 BASH 中执行此操作?

最佳答案

您需要整个 LIST 吗?

如果没有

LAST=`exec ls $MY_DIR | sed 's/\([0-9]\+\).*/\1/g' | sort -n | tail -1`

只会给你 005 部分和

printf "%03d" `expr 1 + $LAST`

将打印序列中的下一个数字。

关于bash - 在名称以数字开头的目录中查找编号最高的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1587059/

相关文章:

bash - 下面代码中意外标记 `(' 附近存在语法错误

bash - diff 的错误退出值是多少?

windows - 为文件名添加序列前缀

Linux sed - 在开始和结束时删除而不删除中间语法

regex - 删除两个方向的n行和sed中的匹配?

linux - 如何在单引号包围的 awk 语句中使用单引号?

linux - 如何 grep 特定行

c - 需要帮助将命令行 ";"选项实现到 C-Shell 脚本中

linux - 将文件移动到同一目录中具有旧扩展名的文件

perl - sed/awk/perl 删除 3 行模式的前两行