所以我有这个功能
ren_barrow(){
for file in *.clu
do
mv -f $file ${file//RELEASE/"$1"}
done
}
但是当我运行它时,您可以看到以.clu结尾的每个文件都将被重命名。
我想在mv
周围放一个if语句,说明文件名中是否包含RELEASE,然后继续。如果我没有这个if语句,我会收到错误
Cannot rename: $file and $file is the same file.
ren_barrow(){
for file in *.clu
do
# if $file grep "RELEASE"; then
mv -f $file ${file//RELEASE/"$1"}
# fi
done
}
答案 0 :(得分:4)
您可以使用mv
这样的命令:
[[ "$file" != *"RELEASE"* ]] && mv -f "$file" "${file//RELEASE/$1}"
答案 1 :(得分:2)
为什么不更改for
循环,以便您不必迭代所有文件?
for file in *RELEASE*.clu
do
mv -f "$file" "${file//RELEASE/$1}"
done
更好的是,如果你拥有它,请使用rename
命令:
rename RELEASE "" *RELEASE*.clu