我有一个名为VERSION的数组,我从mydir目录获取,它有参数(文件),如下所示:
VERSION[0]="TEST01_0.TEST01_1"
VERSION[1]="TEST03_1"
VERSION[2]="TEST02_1.TEST02_2"
VERSION[3]="TEST04_2"
VERSION[4]="TEST02_3"
我试图将TEST01_0.TEST01_1重命名为TEST01_1,将TEST02_1.TEST02_2重命名为TEST02_2。但我收到的错误如下:
mv: cannot stat `TEST01_0.TEST01_1': No such file or directory
mv: cannot stat `TEST02_1.TEST02_2': No such file or directory
你能帮我解决一下吗?这是我的代码块:
#!/bin/sh
VERSION=(/mydir/TEST*)
for file in "${VERSION[@]}"
do
if [[ `echo ${file} | grep -o '_' | wc -l` == 2 ]]; then
mv "${file}" "${file%.*}";
fi
done
由于
答案 0 :(得分:1)
最好的方法是使用mydir
内部bash
内部运行,如下所示,而不是依赖cut
或grep
#!/bin/bash
for file in T*
do
# Getting the string only containing '_' and if the count matches, 2
# doing the file rename
dashes="${file//[^\_]/}"
if (( "${#dashes}" == 2 ))
then
mv -v "$file" "${file%.*}"
fi
done