我的目录名称包含一个数字。我怎样才能找到最大的数字?

时间:2014-10-13 15:19:28

标签: bash variables grep gnuplot

在目录中,我有子目录,其名称为foo $ i(其中$ i是整数)。我怎样才能找到$ i的最大值?谢谢。

我的问题被标记为"未显示任何研究工作,不清楚或无用"但事实并非如此。以前,我曾问过这个问题How can I delete the directory with the highest number name?但是,尽管我可以使用这个解决方案,但我还是不能理解它能够修改它。我已经阅读了Stack Overflow中的某个地方,答案并不是教程。我很感激。话虽如此,要弄清楚如何修改别人的解决方案来解决自己的问题并不总是那么容易。我也想过,不要经历我曾尝试过的事情,因为它会啰嗦,我想我只会问一个简单明了的问题。

问题是,我不理解我对这个问题给出的答案,现在我有另一个相关的问题。我会尽力解释清楚,并希望我没有再记下来!

在目录中,我有子目录,其名称是整数。如何找到最大值整数,为其赋值并在GNUplot脚本中使用它?

到目前为止,我可以使用解决方案中的代码找到整数值:

ls -pq | grep '^[0-9]*/$' | sort -n | tail -n1

也许这段代码对我的新问题来说太复杂了,但它确实有效。

我们假设这个整数的值为$ INT。

现在我想将此值分配给GNUplot代码行:

path="path/to/directory/$INT/file_name"

请告诉我如何将最大目录的值分配给变量并将其传递给GNUplot脚本?谢谢。

2 个答案:

答案 0 :(得分:0)

$ ls -al
total 20
drwxr-xr-x  5 myname myname 4096 Oct 13 08:25 .
drwxrwxrwt 14 root   root   4096 Oct 13 08:25 ..
drwxr-xr-x  2 myname myname 4096 Oct 13 08:25 foo1
drwxr-xr-x  2 myname myname 4096 Oct 13 08:25 foo12
drwxr-xr-x  2 myname myname 4096 Oct 13 08:25 foo2
$ find . -name "a*" -type d| sed 's/.*foo//g'| sort -n | tail -n1
12

如果上面没有问题,请告诉我。

答案 1 :(得分:0)

您可以使用-v的{​​{1}}选项按"版本字符串"对目录进行排序。显示的最后一个文件是编号最大的文件。

ls

不建议不要在脚本中解析shopt -s extglob ls -v foo+([0-9]) 的输出。如果你的目录名称更复杂,它可能会破坏。您可以在循环中累积最大值:

ls

无论你做什么,都要小心。在您报告最高编号的那一刻,已经有另一个具有更高编号的子目录了!