我列出的目录,我想以按名称排序,而忽视龙头“”,即输出应该是:UNIX命令 - 忽略“的”排序时
Apple
The Banana
Orange
,而不是
Apple
Orange
The Banana
这样做的最佳方法是什么?
我列出的目录,我想以按名称排序,而忽视龙头“”,即输出应该是:UNIX命令 - 忽略“的”排序时
Apple
The Banana
Orange
,而不是
Apple
Orange
The Banana
这样做的最佳方法是什么?
ls | sed -e 's/^The \(.*\)/\1, The/' | sort | sed -e 's/\(.*\), The$/The \1/'
此解决方案,但是是傻,不会在任何情况下工作(例如有双空格)
find . -type d | grep -o "[^./].*" | sed 's/^The/ /' | sort | sed 's/ /The /'
其实我要去把那写下来。
我怀疑是下面会做你想要它做的事情:
ls -d * | sed 's/^The /\t/' | sort -b | sed 's/^\t/The /'
我会解释。 ls -d *
列出了所有的目录。 sed -r 's/^The /\t/'
使用制表符(空格占位符)替换所有前导的“The”,sort -b
排序,忽略前导空格(制表符),并且sed 's/^\t/The /'
再次用“The”替换所有这些前导制表符。
不太确定这是否有效......您替换为占位符的前导空间似乎会导致所有这些目录浮动到顶部 – William 2010-12-06 05:24:48
啊。我试图简化帖子的内容。我正在剥夺领先地位./并且只关心领先的。然后我认为领先的空间被忽略。现在编辑... – jmilloy 2010-12-06 05:28:25