如何将 find 命令与其他命令结合使用,这样我就不必导航到文件夹?

Cha*_*ton 7 python command-line find locate

有时我想运行某些文件,但我不想一直导航到文件夹。

如果我知道文件名并且find -name file_name.py只返回一个结果,我可以使用它吗?

例如,不是一直导航到特定文件夹并调用:

python file_name.py
Run Code Online (Sandbox Code Playgroud)

我可以写:

python [ find -name file_name.py ] 
Run Code Online (Sandbox Code Playgroud)

或者

python [ locate file_name.py ]
Run Code Online (Sandbox Code Playgroud)

或者某种“在我的整个计算机中搜索此文件名并使用它”的变体?最好在一行。

Rob*_*ans 12

我认为您正在寻找:

python $(find -name myscript.py)
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 5

将该行添加shopt -s globstar.bashrc主目录中的文件中。(要尝试一下,请在命令行中输入此内容,它只会在您当前的 shell 中生效。)

那么你可以用**/来表示“在当前目录或子目录中递归地等等”,即与简单find命令相同的东西。

python **/myscript.py
Run Code Online (Sandbox Code Playgroud)

警告:**/遍历目录的符号链接,而find不会。在 bash 中,您无法避免这种情况。在 zsh 中,它**/是开箱即用的,并且不遍历符号链接(***/在极少数情况下您想要遍历符号链接)。