Bash 如何在每次运行脚本时创建名称中数字不断增加的文件?
我需要创建一个文件,该文件的名称在每次运行时都会递增Bash 如何在每次运行脚本时创建名称中数字不断增加的文件?,bash,Bash,我需要创建一个文件,该文件的名称在每次运行时都会递增 sh SyslogClient.sh > syslogExport.log 下次文件将是syslogExport1.log,syslogExport2.log等 如何执行此操作?您可以将以下行添加到脚本SyslogClient.sh的开头: # if logfile exists if [ -f syslogExport.log ] then # count number of logfiles count=`ls syslogExp
sh SyslogClient.sh > syslogExport.log
下次文件将是syslogExport1.log
,syslogExport2.log
等
如何执行此操作?您可以将以下行添加到脚本SyslogClient.sh的开头:
# if logfile exists
if [ -f syslogExport.log ]
then
# count number of logfiles
count=`ls syslogExport*.log | wc -w`
# rename syslogExport.log file
mv syslogExport.log syslogExport${count}.log
fi
这将在syslogExport.log中保留当前日志,并在syslogExport1.log、syslogExport2.log等中保存以前的日志
希望这有帮助您可以使用以下内容:
sh SyslogClient.sh > syslogExport$(( $(find . \( -name . -o -prune \) -type f -name 'syslogExport*.log' | sort -V | tail -1 | tr -cd 0-9) + 1)).log
-不要进入子目录(请参阅)\(-name.-o-prune\)
-仅查找文件-键入f
-版本排序是数字排序,但也处理前面的字符sort-V
-获取最后一行(最大数量)tail-1
-仅保留数字tr-cd 0-9
-捕获命令的结果$(…)
-将1添加到最大值$(…+1))
date
命令:
SyslogClient.sh > syslogExport$(date +"%y%m%d%H%M%S").log
这将生成syslogExport200306155325.log、syslogExport200306155700.log等文件。
var=0;bash SyslogClient.sh>syslogExport$((var++).log
它确实使用syslogexport0.log创建了文件,但它会继续覆盖现有文件。如果您想这样做,您必须从SyslogClient.sh
打开并重命名该文件。如果有人从序列中间删除了一个日志文件,这将覆盖现有文件。