You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在find命令中仅获取basename?不使用basename或printf

在find命令中获取文件名(basename)并用于后续操作的替代方案

你可以通过在-exec里调用shell脚本的方式,直接提取文件名并传递给后续命令,避开你排除的两种方法:

find . -type f -exec sh -c '
  for file do
    base=$(basename "$file")
    find /home -type l -name "*$base*"
  done
' sh {} +

说明:

  • 用-exec sh -c启动一个shell进程,{} +会把find找到的所有文件批量传递给shell,比逐个处理({} \;)更高效
  • 在shell循环里,通过basename "$file"提取每个文件的纯文件名(不带路径)
  • 把提取到的$base变量传给第二个find的-name参数,就能匹配/home目录下名字包含该文件名的符号链接了

这个写法既满足你不使用指定两种方法的要求,又能实现你想要的“用文件名而非完整路径作为后续命令参数”的效果。

内容的提问来源于stack exchange,提问作者Bog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:36:10