use*_*390 3 scripting awk shell-scripting
我有像下面这样的文件名
adn_DF9D_20140515_0001.log
adn_DF9D_20140515_0002.log
adn_DF9D_20140515_0003.log
adn_DF9D_20140515_0004.log
adn_DF9D_20140515_0005.log
adn_DF9D_20140515_0006.log
adn_DF9D_20140515_0007.log
Run Code Online (Sandbox Code Playgroud)
我想从文件名中获取年、月、日并创建目录
前任: [[ ! -d "$BASE_DIR/$year/$month/$day" ]] && mkdir -p "$BASE_DIR/$year/$month/$day";
如何实现这一目标并分享您的想法/脚本
如果文件名总是像您的示例中那样,您可以使用以下内容:
for x in *.log; do year=${x:9:4}; month=${x:13:2}; day=${x:15:2}; [[ ! -d "$year/$month/$day" ]] && mkdir -p "$year/$month/$day"; done
Run Code Online (Sandbox Code Playgroud)
这个子串提取在bash中可用,其他shell不确定。