我正在尝试在此处编写一个嵌套的bash循环。在工作目录中的每个目录中,都有文本文件,并且如果我读取第一个文本文件,则希望在每个目录中创建一个名为“核苷酸频率”的新目录。这是我尝试过的方法,但是不起作用。
for d in */ ; do
echo "My Directories: " ${d}
for f in $d/*.txt; do
echo "My File: " ${f}
if [f = 1]
then
mkdir $d/nucleotide_frequency
fi
done
done
答案 0 :(得分:0)
你很近。缺少的是您对文本文件的检查。
此:
if [f = 1]
正在查看函数或程序f
是否等于数字1。
bash内置的if
函数具有标志-s
,用于检查文件是否存在并且大小大于零。
for d in */
do
echo "My Directories: ${d}"
for f in "${d}"/*.txt
do
echo "My File: ${f}"
# Let's make sure that the file exists and is not empty
if [[ -s "${f}" ]]
then
mkdir "${d}"/nucleotide_frequency 2>/dev/null
break
fi
done
done