我可以截断ls列表中的长文件名吗


10

我有一些文件名很长。请问有没有一种方法可以使用ls -C并截断文件名以获取更多的整体视图列?

还是有一种更好的方法来获得紧凑的房源?

Answers:


9

您可以执行以下操作:

ls | cut -c1-20 | columns -W "${COLUMNS:-80}"

列示例

(这是columnss从GNU AUTOGEN)。要么:

ls | cut -c1-20 | column -c"${COLUMNS:-80}"

列示例 使用column对BSD系统或如发现bsdmainutils在Debian或其衍生物。

zsh 还支持在列中打印内容,因此您可以定义以下功能:

setopt extendedglob
c() print -rC$[COLUMNS/(($1)+2)] -- "${(M)@[2,-1]##?(#c0,$[$1])}"

并将其用作:

c 20 *.txt

要在列中打印列表txt文件,将其截断为20个字符。

为了使它更疯狂,您可以添加:

command_not_found_handler() {(($1)) && c "$@"}

这样,您还可以执行以下操作:

20 *

甚至:

8+8 *

zsh示例


太好了,谢谢。在我的Fedora 12系统上,我使用了ls | 切-c1-20 | -W“ $ {COLUMNS:-80}”列,将我的所有文件放在一个屏幕上。
哈里·韦斯顿2014年

0

假设有80列的屏幕,我喜欢使用

ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more

在此处输入图片说明

使用ls -FC,而不是按最近排序


(旁注:我ls已经滚动了,因为它的别名为ls -CF --color | more -r。不确定这是最佳实践...)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.