【发布时间】:2014-07-17 08:52:20
【问题描述】:
我发现已经有人问过如何在 bash 脚本中重命名多个文件。我已经检查了所有答案。但是,我无法解决我的问题。 我想在给定目录中找到具有特定名称的所有文件。然后,我想相应地重命名所有文件。我需要所有以“lattice”开头的字典,还需要以“POSCAR”开头的文件。在格子目录中。我有很多以 'lattice' 开头的目录
这是我尝试过的。 Bash 给出错误,例如“它们是相同的文件”
match=POSCAR.
replace=POSCAR
for D in *lattice*
do echo "$D"
for file in $(find $D -name "*POSCAR*")
do
echo "$file"
src=$file
tgt=$(echo $file | sed -e "s/*$match*/$replace/")
fnew= `echo $file | sed 's/*POSCAR/POSCAR/'`
mv $src $tgt
done
done
【问题讨论】:
-
这有点明显,但我认为您不应该在值和声明符符号 (=) 之间留有空格。此外,将变量放在引号之间,以防止 IFS 进一步扩展。在成对的反引号上使用 $() 以及在 Bash/POSIX 中使用它是首选。
-
你也没有在那里使用你的 fnew 变量。您刚刚为其分配了一个值。