如何在整个 Linux 文件系统中搜索所有 python 文件(扩展名为 的文件.py
)?我知道我可以这样做,find -name filename
但是对于文件类型,我该如何做呢?
答案1
-name '*.py'
因为-name
接受一种模式。
注意单引号。
答案2
并非所有 Python 文件都具有文件扩展名.py
- 例如尝试运行grep -rni python /usr/bin
)。大多数这些脚本都会有一个“shebang”(或 hashbang)行(例如#!/usr/bin/env python
)#!/usr/bin/python2.7
。这会通知脚本的解释器需要使用哪个程序来运行它,您可以搜索它来查找 Python 文件
但是,您也可以使用文件的 mimetype(通常类似于text/x-python
)来找到它:
find / -type f | while read in ; do if file -i "${in}" | grep -q x-python ; then echo "${in}" ; fi ; done
/
您想要的搜索目录在哪里。
您find
还可以添加-executable
仅查找可执行文件的选项。此外,使用-type f
限制查找仅查找文件 - 您可以更改此设置,然后显示符号链接等(一些脚本包含在/usr/lib
etc 中并且符号链接到/usr/bin/
etc)。还有更多选项可用,您可以通过运行来查看man find
。
file
即使文件没有扩展名等,也应该能够猜测文件类型(使用 shebang 行等)- 参见这里。
要删除任何find: ‘/.../FILE’: Permission denied
etc 错误,您可以以 root 身份运行脚本(使用sudo bash -c "COMMAND"
,使用 etc 打开 shell sudo su
),和/或简单地附加2>/dev/null
到 find 命令。
答案3
sudo find / -name "*.py"
您只需要sudo
避免Permission denied
s(因为您正在从根目录进行搜索)。