Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash-从子目录移动文件_Bash_Shell - Fatal编程技术网

Bash-从子目录移动文件

Bash-从子目录移动文件,bash,shell,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_* dir

我对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
当我尝试运行脚本时


任何帮助都将不胜感激

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

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

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

如果不知道重定向的作用,请删除
<$innerDirectory
<$file
重定向。此处有多个错误,但没有目录树的详细信息,我无法帮助您。该错误是由于
<$innerDirectory
引起的。没有必要这样做,请将其移除。
<$file
删除这两条语句也是如此。谢谢哇,非常感谢你的回答!我仍在学习bash的所有细节,所以这对我来说是一段“啊哈”代码。
mkdir -p usable_pdbFiles
mv */usable_*/*.ent usable_pdbFiles