如何在find命令输出中去除开头的./前缀?
如何直接用find命令去除输出路径的./前缀?
执行find . -type f命令时,输出结果会自带./前缀:
./Makefile ./main.py ./pkg/__init__.py
(注:你提供的原始输出里的./pkg是目录,和-type f的文件搜索条件矛盾,推测是笔误,以下解答基于文件搜索的正常场景)
如果不想借助sed这类外部工具处理输出,直接用find本身就能实现需求,核心是利用它的-printf选项自定义输出格式:
解决方案:使用find的-printf参数
执行以下命令即可:
find . -type f -printf "%P\n"
其中%P是find的格式占位符,作用是输出去除搜索起始路径(这里是当前目录.)后的相对路径,完全符合你的预期,最终输出如下:
Makefile main.py pkg/__init__.py
补充说明
这个方法适用于GNU find(绝大多数Linux发行版默认使用的版本);如果是BSD find(比如macOS系统自带的版本),由于它不支持%P占位符,这种情况下可能还是需要配合sed等工具,但如果限定只用find自身,暂时没有更直接的替代方案。
内容的提问来源于stack exchange,提问作者Hai Vu
相关产品推荐
相关产品推荐

