gpt4 book ai didi

regex - Bash:提取文件名的数量以移动到编号正确的目录中

转载 作者:行者123 更新时间:2023-11-29 09:10:26 25 4
gpt4 key购买 nike

我在单个目录中有一个文件列表,例如..

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

任何人都可以帮我吗?谢谢!!

最佳答案

尝试以下纯 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

关于regex - Bash:提取文件名的数量以移动到编号正确的目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com