您是否有关于如何编写脚本的指针,该脚本将在我的系统中搜索应用程序,库(即/usr/local/lib和/usr/local)以及仅是PPC的二进制文件?

我将系统从PPC Mac升级到了运行Leopard 10.5的Intel Mac。然后,我升级到了Rosetta随附的Snow Leopard 10.6。因此,我现在才意识到系统上剩下的所有旧PPC内容!

最佳答案

file命令可以检测文件中可用的二进制类型。

file -b /usr/bin/atrm
setuid Mach-O universal binary with 3 architectures
/usr/bin/atrm (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/atrm (for architecture i386): Mach-O executable i386
/usr/bin/atrm (for architecture ppc7400): Mach-O executable ppc

因此,这只是适本地使用查找和过滤的问题。这样的事情应该会找到系统上具有PPC子节的所有二进制文件。
find / -perm -u+x ! -type d -exec file {} \; | grep ppc | awk '{print $1}'

PPC只是有点困难。为此,您需要执行三个命令以在/tmp中创建2个文件,第一个包含一个PPC文件列表,第二个包含32或64位x86文件列表。方便地,“ppc”匹配ppc和ppc64。
find / -perm -u+x ! -type d -exec file {} \; | grep ppc | awk '{print $1}' > /tmp/ppc
find / -perm -u+x ! -type d -exec file {} \; | grep i386 | awk '{print $1}' > /tmp/x86
find / -perm -u+x ! -type d -exec file {} \; | grep x86_64 | awk '{print $1}' >> /tmp/x86

然后,对sort/uniq进行一点排序(仅对路径进行排序,并确保每个二进制仅列出一次):
cat /tmp/x86 | sort | uniq > /tmp/x86.filtered
cat /tmp/ppc | sort | uniq > /tmp/ppc.filtered

然后,使用diff(以及更多处理)生成仅ppc的文件列表:
diff /tmp/ppc.filtered /tmp/x86.filtered | grep -e '<' | awk '{print $2}' | perl -p -e 's/:$//'

最终结果应该是仅包含ppc可执行文件mach-o部分的文件列表。我建议在核对任何内容之前先核对 list 。

一些注意事项:

以上所有操作均在终端中完成。

这只是一个hack。它在我的系统上工作正常,很高兴您提出问题,因为我想知道同样的事情。但这只是一个hack。

关于macos - 在Snow Leopard中查找所有PPC库,二进制文件和应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1406456/

10-11 06:39