我想输出目录中的所有标题。每行有一个条目,每行应以四个空格开头,并应以一个空格和一个“\”字符结尾。
____header1.h_\
____header2.h_\
____header3.h_\
我已经想出了如何使输出每行一个条目。
ls -1 *.h
但我不知道如何进行格式化。我应该在哪里学习更复杂的格式?
编辑:
所有答案中的所有脚本都会产生所需的输出。我希望我能接受所有的答案。
您可以使用printf
和 shell 通配符而不是尝试格式化ls
输出。
尝试类似:
$ printf ' %s \\\n' *.h
a.h \
b.h \
c.h \
ls
真正意味着作为人类的“交互式”工具,避免将其用于其他任何事情。
ls -1 *.h | sed 's/^/ /' | sed 's/$/ \\/'
或者,您可以说:
ls -1 *.h | sed 's/.*/ & \\/'
看
find . -maxdepth 3 -type f -iname "*" -printf "%h,%f,%CY-%Cm-%Cd %CT,%s,%u,%M\n"
ls -l *.h|awk '/\.h/{print " "$0" \\"}'
或者在 awk 中以更简单的方式:
> ls -1 *.h | awk '$0=" "$0" \\"'
测试:
> ls -1 *.hh
Algorithms.hh
Timer.hh
a.hh
> ls -1 *.hh | awk '/\.hh/{print " "$0" \\"}'
Algorithms.hh \
Timer.hh \
a.hh \
>
或者你可以使用 perl:
ls -1 *.h | perl -plne '$_=" ".$_." \\";'
ls -l *.h|rev|ts "\\"|rev|ts " "
(如果 ls 输出不是交互式终端,它将逐行显示文件名)