Bash-从子目录移动文件
我对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
#!/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
删除这两条mkdir -p usable_pdbFiles
mv */usable_*/*.ent usable_pdbFiles