没有尾随斜线的dirs“/”

时间:2012-01-28 10:12:57

标签: linux bash sed awk

我想要一个dir的列表(每行一个项目)。但最后一个字符是“/”

 ls /var/lib/mysql/ | grep -v "\."

这表明:

 wachuwar_funkfow/
 wachuwar_prueba/
 webdeard_arde/

我想要

 wachuwar_funkfow
 wachuwar_prueba
 webdeard_arde

我很感激帮助

6 个答案:

答案 0 :(得分:10)

您的ls可能是别名或被定义为.bashrc/etc/profile或其他地方的一项功能。

尝试ls的完整路径

/bin/ls /var/lib/mysql/ 

答案 1 :(得分:4)

您应该检查ls的别名。例如,

$> alias ls
alias ls='ls --color=auto'

-F标志会附加目录指示符,因此如果您不需要,请将其从ls别名中删除。

关于一行一行ls具有可用的-1标记,因此它应该像

一样工作
ls -1 /var/lib/mysql/
wachuwar_funkfow
wachuwar_prueba
webdeard_arde

答案 2 :(得分:3)

ls /var/lib/mysql/ | grep -v "\." | sed 's/\/$//'

最后一个sed命令搜索一个结尾为/(被反斜杠)的行,并用空字符串替换它。

答案 3 :(得分:2)

可能您已为ls定义了这样做的别名。如果有帮助,请尝试以下命令:

unalias ls
for dir in `ls -1 .`; do echo $dir; done

答案 4 :(得分:1)

如果您的命令也是别名,则可以绕过别名并使用以下方法直接执行命令:

ls            # runs the alias
command ls    # runs the command
\ls           # runs the command

答案 5 :(得分:1)

要排除名称中包含点的文件,而不是使用grep -v,您可以使用:

shopt -s extglob
\ls -d !(*.*)

反斜杠绕过别名,可能类似于以下之一:

alias ls=ls -F
alias ls=ls -p
alias ls=ls --classify
alias ls=ls --file-type
alias ls=ls --indicator-style=WORD

“WORD”是slashfile-typeclassify之一。