我已经为变量分配了一些文件,现在我尝试打印此文件和txt文件的路径。 但是,它仅显示第一个文件的路径,而不显示变量中包含的其余文件的路径。
这是我的代码:
dbs=$(ls | grep -E "BNST|STN|NAc")
printf '%s\n' "$PWD/${dbs}" > ${sub}_DBSnuclei.txt
这是结果:
/Users/sbaldi/Desktop/WORK_DATA/OCD/ROIs_warped/Sub002/Sub002_BNST_50_L.nii.gz
Sub002_BNST_50_R.nii.gz
Sub002_NAc_80_L.nii.gz
Sub002_NAc_80_R.nii.gz
Sub002_STN_20_L.nii.gz
Sub002_STN_20_R.nii.gz
我想要每个文件的路径。我该怎么办?
答案 0 :(得分:0)
您可以执行以下任一操作:
for i in *{BNST,STN,NAc}*; do echo "${PWD}/$i"; done
for i in *{BNST,STN,NAc}*; do readlink -f $i; done
find ${PWD} \( -name '*BNST*' -o -name '*STN*' -o -name '*NAc' \)
echo $PWD/*{BNST,STN,NAc}* | tr ' ' '\n'
find $PWD/*{BNST,STN,NAc}*
答案 1 :(得分:0)
为此仅使用xargs
:
<<<"$dbs" xargs -n1 printf "%s%s\n" "$(pwd)"
对于$dbs
变量中的每一行,它将运行printf "%s%s\n" <pwd output> <line>
。
在tutorialspoint上进行了测试。
答案 2 :(得分:0)
在示例输出中使用简单的文件名,您可以使用
printf "$PWD/%s\n" $dbs
解决方案的问题是printf
看到一个参数。多行字符串的开头带有一个$PWD
的一个参数。