basename并在unix中找到return

时间:2014-08-12 01:16:14

标签: bash unix

我的回报中有这个结构:

.//r-repos/gbm/DESCRIPTION
.//r-repos/GCD/DESCRIPTION
.//ggplot2/DESCRIPTION

我想只显示DESCRIPTION文件的父文件夹(gbm,gcd,ggplot2),但我不知道为什么“ggplot2”是屏幕上唯一的输出。

r_path=$(find "$dossierpath"  -iname DESCRIPTION -exec dirname {} \;)
for var in "$r_path" 
do 
 basename "$var"
done
我有什么: 输出:ggplot2

我想要的是:输出:gbm,gcd,ggplot2

非常感谢

1 个答案:

答案 0 :(得分:1)

那是因为你决定引用你的变量:$r_path,这是find命令的返回。

如果你的目录名中有空格和/或换行符等,我会推荐这样的东西:

find "$dosierpath" -iname DESCRIPTION -print0 | while IFS= read -r -d '' file; do

    basename "$(dirname "$file")"
done