从printf中删除两个字符?

时间:2014-02-06 02:16:57

标签: bash replace find printf

使用GNU find 4.4.2;我对如何从文件名退格.\感到困惑:

find -name '*' -fprintf foobar "\b\b%h%f\n"

我打算怎么做?

1 个答案:

答案 0 :(得分:2)

Backspacing在您的终端中纯粹是一个美化问题,不会从数据中删除字符。

find打印./,因为您隐式要求它从.进行搜索(不提供路径)。

您可以使用find -printf '%P\n'打印没有此搜索路径的路径。

您也可以使用find *,因为这样可以从目录中的每个(非隐藏)文件而不是目录本身进行搜索。


有趣的是,这就是你如何按照字面意思要求做的事情:

-printf '%H/\b\b%P\n' # Do not use! Read context!

这转换为“打印搜索路径(.)和斜线。打印两个退格键使终端隐藏它们,并使所有程序消耗输出阻塞。然后打印所需的路径。”

显然,这可以更好地简化为“打印您想要的路径”,即-printf '%P\n'