Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash:如何以同一文件夹中上一个文件的数字id命名文件?_Bash_Filenames_Sequence - Fatal编程技术网

Bash:如何以同一文件夹中上一个文件的数字id命名文件?

Bash:如何以同一文件夹中上一个文件的数字id命名文件?,bash,filenames,sequence,Bash,Filenames,Sequence,我正在尝试创建一个简单的脚本,用于从命令行记录笔记。文件名应包含每个注释的编号和创建日期。像这样: 01_20130711.txt 02_20130722.txt 03_20130731.txt ... 因此,从我输入的最后一个音符开始,音符编号应该简单地向上计数。此外,当notes文件夹为空时,在其中创建的第一个文件的编号应为01 如何实现这种自动计数 试试看 lastfile = `ls -lrth | tail -n 1` lastnumber = `echo $lastfile | a

我正在尝试创建一个简单的脚本,用于从命令行记录笔记。文件名应包含每个注释的编号和创建日期。像这样:

01_20130711.txt
02_20130722.txt
03_20130731.txt
...
因此,从我输入的最后一个音符开始,音符编号应该简单地向上计数。此外,当notes文件夹为空时,在其中创建的第一个文件的编号应为
01

如何实现这种自动计数

试试看

lastfile = `ls -lrth | tail -n 1`
lastnumber = `echo $lastfile | awk -F"_" '{print $1}'`

获取最后一个节点的编号。我认为脚本的其余部分现在已经很清楚了。

我阅读并尝试了
echo${name}$((num+1))
,但在
BASH\u重新匹配方面遇到了问题。不过,这是一个公平的批评。谢谢,这是一个有趣的选择,但我更喜欢史蒂文·佩妮的解决方案,因为它解释了我自己的一个问题。另外@StevenPenny感谢您的链接,非常有用!非常感谢。这就解释了我在BASH\u重赛中遇到的一些问题。像我这样的N00B的附加说明:添加
cat>$next
作为最后一行,您将有一个工作的“应用程序”。请注意,BASH_REMATCH实际上是一个数组。在没有索引的情况下引用它相当于
${BASH_REMATCH[0]}
,即仅第一个元素,在本例中,这就是您所需要的。数组的后续元素将包含捕获括号的内容,例如:
['abc'=~()()]]和&echo${BASH_REMATCH[3]}
输出“c”@glennjackman谢谢,很好的解释;这是我遇到的问题之一,我在最初的问题的评论中链接了另一个例子。
set *.txt
[[ ${*: -1} =~ [0-9]+ ]]
printf -v next '%02d_%d.txt' $(( BASH_REMATCH + 1 )) $(date +%Y%m%d)
touch $next