bash 根据要求查找带路径的命令

bash find command with path as requirement

我想使用 find 命令获取 /bin 中包含字母 'm' 的文件的文件名,而不是在 /bin 中。 当 /bin 是我的工作目录时它工作正常但是当我在路径中添加 /bin 作为要求时它 returns 与当前目录无关。

作品:

find -type f -name "*m*" -exec basename {} \;

不会:

find -type f -name "*m*" -path "/bin/*" -exec basename {} \;

我怀疑你不想使用 -path /bin… 而只是

find /bin -type f -name "*m*" -exec basename {} \;

find 的第一个参数是要搜索的路径。-path 标志是一种模式匹配功能,用于检查模式是否与找到的名称的完整路径相匹配。

事实上,如果您在 BSD 查找(例如 macOS 附带的)上尝试过此命令,它甚至不会让您尝试其中一个命令,因为您没有包含路径。

find -type f …       # not ok
find . -type f …     # ok
find /bin -type f …  # ok

这会起作用。

find /bin/* -type f -name "*m*" -exec basename {} \;

相当于进入/bin文件夹执行

find -type f -name "*m*" -exec basename {} \;