我有一个看起来像这样的列表
ABC_100.0_k_1x1x1.xyz
ABC_100.0_k_1x1x1.txt
ABC_100.0_k_2x2x2.xyz
ABC_100.0_k_2x2x2.txt
ABC_100.0_k_10x10x10.xyz
ABC_100.0_k_10x10x10.txt
ABC_600.0_k_1x1x1.xyz
ABC_600.0_k_1x1x1.txt
ABC_1000.0_k_1x1x1.xyz
ABC_1000.0_k_1x1x1.txt
我想编写一个脚本来创建以下文件夹
ABC_100.0_k_1x1x1
ABC_100.0_k_2x2x2
ABC_100.0_k_10x10x10
ABC_600.0_k_1x1x1
ABC_1000.0_k_1x1x1
我试过以下
#!/bin/bash
for file in *_???.*_?x?x?.*
do
dir=${file%}
dir=${dir%.*}
mkdir -p "./$dir" &&
scp -r "$file" "./$dir"
done
但我只得到文件夹
ABC_100.0_k_1x1x1
ABC_600.0_k_1x1x1
我究竟做错了什么?也许这很愚蠢,但这是我第一次尝试编写 shell 脚本
另一种脚本是:
#!/bin/bash
for file in *_*.*_*x*x*.*
do
dir=${file%}
dir=${dir%.*}
#if [ ! -d "$dir" ];
#then
mkdir -p "./$dir"
#fi
scp -r "$file" "./$dir"
done
符号 ? 替换单个字符,因此它只适合序列 1x1x1 或 2x2x2,而不适合 10x10x10(10 由两个字符组成)。我添加了一个 if 语句只是为了避免重新创建相同的文件夹。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句