在《程序员修炼之道》的“变换式编程”章节中有这样一段 Shell 命令,其作用是列出当前目录中行数最多的 5 个文件。
$ find . -type f | xargs wc -l | sort -n | tail -6 | head -5
470 ./debug.pml
470 ./test_to_build.pml
487 ./dbc.pml
719 ./domain_languages.pml
727 ./dry.pml
我算是 PowerShell 新手,折腾了老长时间之后终于写出来了,总感觉不如 Shell 的优雅,应该还有很大的优化空间。
(Get-ChildItem .\ | ForEach-Object {$_ | Select-Object -Property 'Name', @{label = 'Lines'; expression = {($_ | Get-Content).Length}}} |Sort-Object -Property 'Lines')|Select-Object -Last 5
这里发出自己的答案,如果你有兴趣,而且有信心,能够写出更优雅简洁实现,可以来试试看。
当然不必使用别名和缩写来缩短长度,虽然看起来更简洁了,但损失了可读性。
“实话实说”好像是微软的一贯命名风格,比如说新线程在 Linux 里面用 fork,在 Windows 里面好像就是 creatProcess,感觉是微软的那个命名方法更加具有可读性,况且 PowerShell 中还能设置别名,想要多少短都行。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.