Bash - 从子目录移动文件

时间:2014-06-11 23:30:35

标签: bash shell

我对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

当我尝试运行脚本时。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

重定向< $innerDirectory< $file无效,这导致了问题。您不需要为此使用循环,您可以依赖shell的文件名扩展并直接使用mv

mkdir -p usable_pdbFiles
mv */usable_*/*.ent usable_pdbFiles

请记住,此解决方案以及您正在处理的基于循环的解决方案将覆盖目标目录中具有相同名称的文件。