使用Nushell ,我希望ls
在文件之前列出目录。此外,我希望符号链接正确排序:如果它是指向目录的链接,则应将其包含在目录列表中。如果它是指向文件的链接,则应将其包含在文件列表中。
我开发了以下脚本:
let is_dir = {|file|
$file.type == 'dir' or ($file.target | to text | str ends-with '/')
};
let dirs = ls --all --long
| filter $is_dir
| sort-by name --ignore-case;
let files = ls --all --long
| filter {|file| not (do $is_dir $file)}
| sort-by name --ignore-case;
$dirs ++ $files
| select name
但对于如此简单的请求来说,这似乎太多了。
- 代码能不能简化一点?
1.1 有没有更好的方法可以确定符号链接是否指向目录?使用$file.target | to text | str ends-with '/')
是我看到的唯一方法,但我对这个解决方案并不满意。1.2
另外,filter {|file| not (do $is_dir $file)}
这不是我写过的最好的代码。我怎样才能做得更好? - 有没有更好的方法来实现同样的目的?
这个问题是关于Nushell 的,而不是其他 shell 的。:-)