我想输出目录中的所有标题。每行有一个条目,每行应以四个空格开头,并且应以空格和'\'字符结尾。
____header1.h_\
____header2.h_\
____header3.h_\
我已经想出如何在每行输出一个条目。
ls -1 *.h
但我不知道如何进行格式化。我应该在哪里学习更复杂的格式?
编辑:
所有答案中的所有脚本都会产生所需的输出。我希望我能接受所有答案。
答案 0 :(得分:8)
您可以使用printf
和shell globbing,而不是尝试格式化ls
输出。
尝试类似:
$ printf ' %s \\\n' *.h
a.h \
b.h \
c.h \
ls
实际上是人类的“互动”工具,避免将其用于其他任何工具。
答案 1 :(得分:4)
ls -1 *.h | sed 's/^/ /' | sed 's/$/ \\/'
或者,您可以说:
ls -1 *.h | sed 's/.*/ & \\/'
答案 2 :(得分:2)
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 '$_=" ".$_." \\";'
答案 3 :(得分:1)
见
find . -maxdepth 3 -type f -iname "*" -printf "%h,%f,%CY-%Cm-%Cd %CT,%s,%u,%M\n"
答案 4 :(得分:0)
ls -l *.h|rev|ts "\\"|rev|ts " "
(如果ls输出不是交互式终端,它将逐行显示文件名)