我知道这是一个愚蠢的问题:我怎样才能 ls 一些目录(里面的文件+目录)并返回类似:0 用于文件,1 用于目录,2 用于 simlink
<name_dir>,1
<name_dir>,1
<name_file>,0
<name_file>,0
<name_file>,0
<name_file>,0
我需要通过 ssh 传递结果,并且我认为流量尽可能小。也许这不是最聪明的选择,知道吗?ls 或 find -printf
ls -F
用斜杠标记目录。然后使用sed
将斜杠转换为“,1”并删除其他标记(用于符号链接等)或用您选择的后缀替换它们。最后将“,0”附加到不以“,1”结尾的所有内容(或您添加的任何其他后缀)
这以“,1”为目录后缀,其他所有目录以“,0”为后缀
ls -F | sed '
s/[\*\@\|]$//;
s/=>$//;
s/\/$/,1/;
/,1$/! s/$/,0/'
另一个建议:
#!/bin/sh
for f in `ls -1 --group-directories-first`; do
if [ -d $f ]; then echo "$f,1";
elif [ -L $f ]; then echo "$f,2";
else echo "$f,0"; fi
done