0

我知道这是一个愚蠢的问题:我怎样才能 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

4

2 回答 2

1

ls -F用斜杠标记目录。然后使用sed将斜杠转换为“,1”并删除其他标记(用于符号链接等)或用您选择的后缀替换它们。最后将“,0”附加到不以“,1”结尾的所有内容(或您添加的任何其他后缀)

这以“,1”为目录后缀,其他所有目录以“,0”为后缀

ls -F | sed '
   s/[\*\@\|]$//;
   s/=>$//;
   s/\/$/,1/;
   /,1$/! s/$/,0/'
于 2013-05-01T12:38:02.100 回答
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
于 2013-05-01T13:12:21.840 回答