我想要一个dir的列表(每行一个项目)。但最后一个字符是“/”
ls /var/lib/mysql/ | grep -v "\."
这表明:
wachuwar_funkfow/
wachuwar_prueba/
webdeard_arde/
我想要
wachuwar_funkfow
wachuwar_prueba
webdeard_arde
我很感激帮助
答案 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”是slash
,file-type
或classify
之一。