可以说,当我执行 ls 命令时,输出是:
file1 file2 file3 file4
是否可以仅显示输出的某一列,在本例中为 file2?我尝试了以下方法但没有成功:
echo ls | $2
基本上我想做的就是仅回显第二列,在这种情况下,我想回显:
file2
答案1
以下命令将输出格式化ls
为一列:
ls -1 /directory
答案2
最可靠的方法是将文件放入一个数组中,然后获取第二个文件,这样就可以避免进行任何解析:
files=(*)
printf '%s\n' "${files[1]}"
取回文件的顺序取决于 的值LC_COLLATE
。因此,LC_COLLATE=C
如果您希望在所有极端情况下进行“标准”排序,您可能需要首先进行设置。
答案3
当输出不是终端时,您需要添加-C
asls
使用单列模式。 awk
然后打印第二列:
ls -C | awk '{print $2}'
答案4
正如已经提到的 - 使用列来解析ls
输出不是很强大,因为ls
根据文件名长度和终端宽度来断行。显示元素列表的单列通常很有趣。您可以使用 cut 命令来执行此操作:
echo file1 file2 file3 file4 | cut -d" " -f2
将显示
file2
请注意,-d
允许您选择列分隔符,例如
cut -d, -f2
您可以显示逗号分隔列表的第二列。