regex – Bash:提取文件名的数量,以移动到编号正确的目录
发布时间:2020-12-15 21:16:33 所属栏目:安全 来源:网络整理
导读:我在一个目录中有一个文件列表,例如.. LDI_P1800-id1.0200.binLDI_P1800-id2.0200.bin...LDI_P1800-id17.0200.binLDI_P1800-id18.0200.bin......LDI_P1800-id165.0200.binLDI_P1800-id166.0200.bin... 我想将它们中的每一个移动到目录中 LDI_P1800-id165.020
我在一个目录中有一个文件列表,例如..
LDI_P1800-id1.0200.bin LDI_P1800-id2.0200.bin ... LDI_P1800-id17.0200.bin LDI_P1800-id18.0200.bin ... ... LDI_P1800-id165.0200.bin LDI_P1800-id166.0200.bin ... 我想将它们中的每一个移动到目录中 LDI_P1800-id165.0200.bin to ../id165/. LDI_P1800-id166.0200.bin to ../id166/. LDI_P1800-id167.0200.bin to ../id167/. ... 等等. 我的猜测是我必须使用正则表达式从字符串中提取id for file in *.0200.bin ; do "extracting id from each file" mv $file ../id$id/. done 任何人都可以帮我吗?谢谢!! 解决方法
尝试以下pure-bash解决方案:
for file in *.0200.bin do id=${file#*-} # delete everything upto the first hyphen id=${id%%.*} # delete everything after the first dot [[ ! -d ../$id ]] && mkdir ../$id # if the directory doesn't exist create it mv $file ../$id done 它也可以在sed中完成,但我更喜欢第一种方法: for file in *.0200.bin do id=$(sed 's/[^-]*-([^.]*).*$/1/g' <<< $file) mkdir -p ../$id && mv $file ../$id done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |