unc*_*der 5 python command-line find
如何在整个 Linux 文件系统中搜索所有 python 文件(扩展名为 的文件.py)?我知道我可以做,find -name filename但我该如何为文件类型做呢?
sudo find / -name "*.py"
您只需要sudo避免Permission denieds (因为您是从根搜索)。
并非所有 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\nRun Code Online (Sandbox Code Playgroud)\n\n/您想要的搜索目录在哪里。
您还find可以添加-executable仅查找可执行文件的选项。另外,使用-type f限制查找仅查找文件 - 您可以更改它,然后也显示符号链接等(某些脚本包含在/usr/lib等中并符号链接到/usr/bin/等)。还有更多选项可用,您可以通过运行来查看这些选项man find。
file即使文件没有扩展名等(使用 shebang 行等),也应该能够猜测文件类型 - 请参阅此处。
要删除任何find: \xe2\x80\x98/.../FILE\xe2\x80\x99: Permission deniedetc 错误,您可以以 root 身份运行脚本(使用sudo bash -c "COMMAND",使用 etc 打开 shell sudo su),和/或简单地附加2>/dev/null到 find 命令。