我想用一些shell脚本评估最新文件夹中的最新文件名。 因此,即时通讯会在其中获取最新的文件夹名称和最新的文件名:
@GetMapping("/requesthandler")
public String requesthandler
(
@RequestHeader(value="User-Agent") String userAgent,
@RequestHeader(value = "host") String host,
Model model
)
{
UserAgentStringParser parser = UADetectorServiceFactory.getResourceModuleParser();
ReadableUserAgent agent = parser.parse(userAgent);
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
this.host=host;
this.deviceCategory=agent.getDeviceCategory().getName();
this.operatingSystem=agent.getOperatingSystem().getName();
this.typeName=agent.getTypeName();
this.browserName=agent.getName();
this.browserIcon=agent.getIcon();
this.deviceProducer=agent.getProducer();
this.versionNumber=agent.getVersionNumber().toVersionString();
this.timeStampLong=timestamp.getTime();
sendMessage(host,deviceCategory,operatingSystem,typeName,browserName,browserIcon,deviceProducer,versionNumber,timeStampLong);
return "requesthandler";
}
文件夹结构:
latest_folder=$(ls -td */ | head -n 1)
echo $latest_folder
cd $latest_folder
latest_file="$(ls -t *$str | head -n 1)"
echo $latest_file
其中001是最新文件夹。如果此文件夹中的最新文件等于999。*,我需要创建一个新文件夹002。
有人知道吗?
答案 0 :(得分:1)
您的想法并不遥远。我建议不要将cd
放到最新的目录中,而只需使用相同的方案,通过在latest_folder/
后面加上命令替换来获取该文件夹中的最新文件。
拥有latest_file
后,您可以简单地使用参数扩展和子字符串删除来隔离前导3位数字(例如filenum="${latest_file%%.*}"
)。之后,您可以根据filenum
决定是否需要新目录。
如果确实需要创建一个新目录,则可以使用printf -v
来利用field-width修饰符和'0'
填充来格式化new_folder
命名为{{ 1}},只需将002
加到1
号上即可,例如latest_folder
注意:就是在从printf -v new_folder "%03d" $((latest_folder + 1))
中删除前导零之后,当添加latest_folder
以获得1
的数字时,例如,防止将其解释为八进制常量。 new_folder
。
将其完全放在一起,您应该能够执行以下操作:
$((latest_folder + 1))
注意:通常应使用#!/bin/bash
limit=999
latest_folder="$(ls -td */ | head -n 1)" ## latest folder
latest_folder="${latest_folder:0:(-1)}" ## remove / at end
latest_file="$(ls -t "$latest_folder/" | head -n 1)" ## latest file
filenum="${latest_file%%.*}" ## isolate ###
if ((filenum == limit)); then ## if ### = 999
n=0
while [ "${latest_folder:n:1}" = '0' ]; do ## remove zeros
latest_folder="${latest_folder:$((n+1))}"
((n++))
done
printf -v new_folder "%03d" $((latest_folder + 1)) ## new folder name
mkdir -p new_folder ## create new folder
fi
和find
来获取目录和文件名列表(使用sort
和-maxdepth
进行控制搜索的文件/目录的深度和类型)
如果您有任何疑问,请告诉我。