Bash:在找到'之前添加前缀'产量

时间:2015-10-29 18:03:19

标签: bash shell unix

我目前正在使用:

find "$location" -maxdepth 1 -type d -exec basename {} \;

显示当前位置的所有目录。但是,我想添加" - " (每种清单项目前面的一种要点)。这可能吗?

4 个答案:

答案 0 :(得分:5)

find内置了所有内容。

find "$location" -maxdepth 1 -type d -printf '- %f\n'

序列%f只获得基本名称; %hdirname等等。

答案 1 :(得分:1)

您可以使用:

while IFS= read -rd '' dir; do
   echo "- ${dir##*/}"
done < <(find . -maxdepth 1 -type d -print0)

答案 2 :(得分:0)

当然!试试这个:

#!/bin/bash
find "$location" -maxdepth 1 -type d -exec basename {} \; | sed 's/^/- /'

这将find命令输出的每一行发送到sed。然后,sed将行^的开头替换为'- '

答案 3 :(得分:0)

这比为每个项目执行程序更有效: (假设文件名没有新行)

find / -maxdepth 1 -type d |
sed 's:^.*/::; s:^:-:' #get basename and prepend -