使用GNU find 4.4.2;我对如何从文件名退格.\
感到困惑:
find -name '*' -fprintf foobar "\b\b%h%f\n"
我打算怎么做?
答案 0 :(得分:2)
Backspacing在您的终端中纯粹是一个美化问题,不会从数据中删除字符。
find
打印./
,因为您隐式要求它从.
进行搜索(不提供路径)。
您可以使用find -printf '%P\n'
打印没有此搜索路径的路径。
您也可以使用find *
,因为这样可以从目录中的每个(非隐藏)文件而不是目录本身进行搜索。
有趣的是,这就是你如何按照字面意思要求做的事情:
-printf '%H/\b\b%P\n' # Do not use! Read context!
这转换为“打印搜索路径(.
)和斜线。打印两个退格键使终端隐藏它们,并使所有程序消耗输出阻塞。然后打印所需的路径。”
显然,这可以更好地简化为“打印您想要的路径”,即-printf '%P\n'