有时我想运行某些文件,但不想一直导航到该文件夹。
如果我知道文件名并且find -name file_name.py
只返回一个结果,我可以使用它吗?
例如,不需要一直导航到特定文件夹并调用:
python file_name.py
我可以写:
python [ find -name file_name.py ]
或者
python [ locate file_name.py ]
或者是“在整个计算机中搜索此文件名并使用它”的某种变体?最好在一行中。
答案1
我认为您正在寻找:
python $(find -name myscript.py)
答案2
将此行添加shopt -s globstar
到主目录中的文件中.bashrc
。(如果只是尝试一下,请在命令行中键入此内容,它只会在您当前的 shell 中生效。)
然后你可以使用**/
它来表示“在当前目录或子目录中递归地执行”,即与简单find
命令相同。
python **/myscript.py
警告:**/
遍历目录的符号链接,而find
不遍历。在 bash 中,您无法避免这种情况。在 zsh 中,**/
开箱即用,不会遍历符号链接(在***/
极少数情况下,您需要遍历符号链接)。
答案3
只是为了表明做事总是有多种方法(即使不使用 Perl):find -name file_name.py -exec python {} \;
也可以。 find 的 exec 选项对找到的每个文件执行以下命令。在此命令中,{}
充当文件的占位符,并\;
表示命令的结束。
答案4
另一个:
xargs -0 python < <(find -name my_script.py -print0 -quit)
现在,作为家庭作业,尝试确定这里介绍的所有方法的优点、缺点和差异。