这是问题的扩展:如何限制 ls 打印的文件数量?
附加条件:如何以适合当前终端宽度的列数打印结果 — —ls
默认情况下就是如此。
我知道如何通过head
命令限制文件数量,但我还没有找到如何以与ls
默认方式相同的方式但通过管道处理后按列打印文件的解决方案。
我尝试使用ls -C
管道将标志(来自man ls
:)-C list entries by columns
连接到cat
。但是它的输出与ls
输出不同:
for i in {1..30}; do touch file$i; done; echo '"ls" out:'; ls; echo '"ls -C | cat" out:'; ls -C | cat
"ls" out:
file1 file11 file13 file15 file17 file19 file20 file22 file24 file26 file28 file3 file4 file6 file8
file10 file12 file14 file16 file18 file2 file21 file23 file25 file27 file29 file30 file5 file7 file9
"ls -C | cat" out:
file1 file12 file15 file18 file20 file23 file26 file29 file4 file7
file10 file13 file16 file19 file21 file24 file27 file3 file5 file8
file11 file14 file17 file2 file22 file25 file28 file30 file6 file9
“ls”输出 2 行。而“ls -C | cat”输出 3 行。这可能是ls -C
错误吗?
我尝试了column
命令。但是当存在名称较长的文件时,它给出的结果与 不同ls
。
mv file30 file-with-long-name; ls
file1 file11 file13 file15 file17 file19 file20 file22 file24 file26 file28 file3 file5 file7 file9
file10 file12 file14 file16 file18 file2 file21 file23 file25 file27 file29 file4 file6 file8 file-with-long-name
ls | cat | column -c $(tput cols)
file1 file14 file19 file23 file28 file6
file10 file15 file2 file24 file29 file7
file11 file16 file20 file25 file3 file8
file12 file17 file21 file26 file4 file9
file13 file18 file22 file27 file5 file-with-long-name
ls
给出 2 行。并ls | cat | column -c $(tput cols)
给出 5 行。—
tput cols
计算终端宽度。是否有其他替代方法,column
不会根据最长文件名格式化所有列的宽度,而是像这样做ls
?
是否有其他命令可以ls
实现这种打印并限制最大文件数量?(但我也希望有类似于ls
文件着色的功能。)
对于每个cd
目录,我希望自动显示当前目录的内容。这可以通过放入环境变量来实现ls
。$PROMPT_COMMAND
但是包含太多文件的目录存在问题。它们会在控制台中产生很多噪音/杂乱。我想限制它们以限制ls
输出。