我创建了一个脚本,它遍历文件的特定子目录,并告诉我每个以 s 开头的子目录中有多少文件。我的问题是在搜索时出现的,子目录创建失败。由于某种原因,当此脚本正在搜索的子目录不存在时,它会将输出替换为另一个先前创建的变量????
我正在用 bash for linux 编写这个。
我正在查看以下子目录...
participantdirectory/EmotMRI
participantdirectory/EmotMRI/firstfour/
participantdirectory/T1
所以,当子目录存在并且一切正常时,这是我应该得到的输出。所有文件都相同(如果正确)。
/home/orkney_01/jsiegel/ruth_data/participants/analysis2/1206681446/20090303/14693
16 in firstfour
776 in EmotMRI folder
2 files in T1 folder
对于没有创建子目录的目录,我得到这个输出......
bash: cd: /home/orkney_01/jsiegel/ruth_data/participants/analysis2/2102770508/20090210 /14616/EmotMRI/firstfour/: No such file or directory
/home/orkney_01/jsiegel/ruth_data/participants/analysis2/2102770508/20090210/14616
776 in firstfour
114 in EmotMRI folder
2 files in T1 folder
我认为,因为 firstfour 是 EmotMRI 的子目录,所以当 firstfour 文件夹尚未创建时,它会用 EmotMRI 中的扫描编号代替这个答案?EmotMRI 中的扫描次数(在这种情况下是正确的)。下面是我的脚本。如果发生这种情况,我该如何阻止它这样做?
for d in $(cat /home/orkney_01/jsiegel/ruth_data/lists/full_participant_list_location_may20)
do
if [ -d "$d" ]
then
gr="failed"
er="failed"
fr="failed"
cd $d/EmotMRI/firstfour/
gr=$(ls s*| wc -l)
echo " "
echo "$d"
echo "$gr in firstfour"
cd $d/EmotMRI/
er=$(ls s*| wc -l)
echo "$er in EmotMRI folder"
cd $d/T1/
fr=$(ls s*| wc -l)
echo "$fr files in T1 folder"
cd $d/EmotMRI
else
echo "$d is currently not available in directory"
fi
done
cd /home/orkney_01/jsiegel/ruth_data/
echo "Check complete"
我知道你可能会对这个脚本有很多改进,我对 linux 很陌生。谢谢你的帮助,