我想把cd转到find命令的输出中:
find ~ -name work_project_linux
cd the_output
答案 0 :(得分:3)
通常,对find
的结果执行任意命令的最佳方法是使用find -exec
。大括号{}
是找到的文件名的占位符,整个命令以+
或\;
结尾。例如,它将在找到的所有文件上运行ls -l
:
find ~ -name work_project_linux -exec ls -l {} +
但是,它不适用于某些特殊命令,例如cd
。 -exec
运行二进制文件,例如在/usr/bin
中找到的二进制文件,而cd
不是二进制文件。它是Shell内置的,这是一种特殊类型的命令,它可以直接执行而不是调用磁盘上的某些可执行文件。对于shell内置程序,可以使用command substitution:
cd "$(find ~ -name work_project_linux)"
如果find
找到多个文件,这将不起作用。仅适用于单个文件名。命令替换也将无法正确处理某些不寻常的文件名,例如带有嵌入式换行符的文件名-异常,但合法。