我的脚本看起来像这样
strenggen ( ) { something; }
strengen 1
strengen 2
strengen 3
strengen 4
strengen 5
etc..
它将一些文件添加到名为 等的目录中strengen?string=1
。strengen?string=2
我想做的是,如果我退出脚本,然后再次运行它,我希望它找到最后运行的数字,无论是 13、14, 60000 或 140000。由于文件名包含最后一个数字,我想我可以查找最后修改的文件并复制该数字(例如find . -type f -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" "
或类似的东西)。如果我 sed 该字符串,我可以获得开始的数字,但我不知道如何忽略其他行?
答案1
以下命令将把最新的“strengen”文件的编号放入变量中$LATEST
:
LATEST=$(/bin/ls -1t | grep `^strengen` | head -1 | sed -e 's/strengen.*=//')
我在这里使用的/bin/ls
不仅仅是ls
,为了消除可能影响输出的任何别名ls -1
-ls
是非常常见的别名。
另请注意,ls
我使用的选项是-1
(数字一)而不是-l
(字母l
)。这告诉ls
我们每行列出一个文件。该-t
选项指示ls
按时间排序,最近的排在最前面。
另一种选择是将类似以下内容放在函数的顶部strenggen()
:
[ -e "strengen?string=$1" ] && return
如果文件已经存在,这将导致函数立即返回而不执行任何操作。