命令
find . -type l -not -xtype l -printf "%p -> %l\n"
Run Code Online (Sandbox Code Playgroud)
打印目录下所有完整的符号链接.。我想将此输出着色,使该%p部分为蓝色。我试过了
find . -type l -not -xtype l -printf '\e[1;34m%-6s\e[m' "%p -> %l\n"
Run Code Online (Sandbox Code Playgroud)
但这会导致错误find: warning: unrecognized escape \e。任何想法如何解决这一问题?
它不太正确,颜色代码序列和%p需要在同一个参数中-printf而不是在单独的参数中。
的-printf标志find不同于通常的内置 from bash。该find版本采用 form 的参数,-printf format而内置的 take printf <FORMAT> <ARGUMENTS...>,这意味着前者不接受格式说明符后跟参数,而只接受定义了选项的单个字符串。所述-printf的选择find提供了各种顺序来描述的文件属性。的%s内部find -printf传达不同的含义比由内置的格式规范定义。
另外我猜printf来自find(GNU findutils) 命令只支持 ANSI 颜色代码并且不接受\e转义序列(不像printfGNU shell的内置,在独立的 GNUprintf实用程序上),但它的八进制等效(这里 033 假设一个基于 ASCII 的系统):
find . -type l -not -xtype l -printf '\033[1;34m%p\033[m -> %l\n'
Run Code Online (Sandbox Code Playgroud)
您可以将您选择的 ANSI 颜色代码添加到上面。
或者您可以使用$'...'在一些 shell 中找到的引用运算符,包括 GNU shell,它确实识别\e:
find . -type l -not -xtype l -printf $'\e[1;34m%p\e[m -> %l\n'
Run Code Online (Sandbox Code Playgroud)
上面\e和\n在传递给find.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |