我对bash脚本编程比较陌生。
我需要创建一个循环遍历一系列目录的脚本,进入具有特定名称的子目录,然后将其文件内容移动到所有文件的公共文件夹中。
到目前为止,我的代码是:
#!/bin/bash
#used to gather usable pdb files
mkdir -p usable_pdbFiles
#loop through directories in "pdb" folder
for pdbDirectory in */
do
#go into usable_* directory
for innerDirectory in usable_*/
do
if [ -d "$innerDirectory" ] ; then
for file in *.ent
do
mv $file ../../usable_pdbFiles
done < $file
fi
done < $innerDirectory
done
exit 0
目前我
usable_Gather.sh: line 7: $innerDirectory: ambiguous redirect
当我尝试运行脚本时。
任何帮助将不胜感激!
答案 0 :(得分:1)
重定向< $innerDirectory
和< $file
无效,这导致了问题。您不需要为此使用循环,您可以依赖shell的文件名扩展并直接使用mv
:
mkdir -p usable_pdbFiles
mv */usable_*/*.ent usable_pdbFiles
请记住,此解决方案以及您正在处理的基于循环的解决方案将覆盖目标目录中具有相同名称的文件。