omy*_*ojj 4 regex string bash extract
我在一个目录中有一个文件列表,例如..
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
...
Run Code Online (Sandbox Code Playgroud)
我想将它们中的每一个移动到目录中
LDI_P1800-id165.0200.bin to ../id165/.
LDI_P1800-id166.0200.bin to ../id166/.
LDI_P1800-id167.0200.bin to ../id167/.
...
Run Code Online (Sandbox Code Playgroud)
等等.
我的猜测是我必须使用正则表达式从字符串中提取id
for file in *.0200.bin ; do
"extracting id from each file"
mv $file ../id$id/.
done
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我吗?谢谢!!
尝试以下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
Run Code Online (Sandbox Code Playgroud)
它也可以用sed,但我更喜欢第一种方法:
for file in *.0200.bin
do
id=$(sed 's/[^-]*-\([^\.]*\).*$/\1/g' <<< $file)
mkdir -p ../$id && mv $file ../$id
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |