There are a couple of ways: user
locate or use the
find utility.
locate will "locate" all instances of a given file name (or part of a given file name); e.g.,
Code:
locate ptrace.h
/usr/src/linux-2.6.37.6/arch/parisc/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/powerpc/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/tile/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/arm/kernel/ptrace.h
/usr/src/linux-2.6.37.6/arch/arm/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-i386/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-i386/shared/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-i386/shared/sysdep/skas_ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-ppc/shared/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-ppc/shared/sysdep/skas_ptrace.h
/usr/src/linux-2.6.37.6/arch/um/include/shared/skas_ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-x86_64/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-x86_64/shared/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-x86_64/shared/sysdep/skas_ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-ia64/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-ia64/sysdep/skas_ptrace.h
/usr/src/linux-2.6.37.6/arch/microblaze/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/avr32/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/blackfin/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/frv/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/score/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/x86/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/h8300/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/sh/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/m68k/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/ia64/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/m32r/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/xtensa/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/mn10300/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/cris/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/cris/include/arch-v10/arch/ptrace.h
/usr/src/linux-2.6.37.6/arch/cris/include/arch-v32/arch/ptrace.h
/usr/src/linux-2.6.37.6/arch/alpha/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/mips/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/sparc/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/s390/kernel/compat_ptrace.h
/usr/src/linux-2.6.37.6/arch/s390/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/include/linux/ptrace.h
/usr/doc/ntp-4.2.6p3/html/ntptrace.html
/usr/include/linux/ptrace.h
/usr/include/sys/ptrace.h
/usr/include/asm-x86/ptrace.h
That's a lot of stuff to wade through, but it can be handy. Before you can use the
locate utility, you need to build the data base that's used by
locate:
Code:
su - or sudo
slocate -u
See the
slocate manual page for details.
The
find utility, on the other hand, is generally more useful for finding individual files; e.g.,
Code:
find / -type f -name 'ptrace.h' 2>/dev/null
/usr/src/linux-2.6.37.6/arch/parisc/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/powerpc/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/tile/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/arm/kernel/ptrace.h
/usr/src/linux-2.6.37.6/arch/arm/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-i386/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-i386/shared/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-ppc/shared/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-x86_64/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-x86_64/shared/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/um/sys-ia64/sysdep/ptrace.h
/usr/src/linux-2.6.37.6/arch/microblaze/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/avr32/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/blackfin/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/frv/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/score/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/x86/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/h8300/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/sh/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/m68k/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/ia64/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/m32r/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/xtensa/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/mn10300/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/cris/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/cris/include/arch-v10/arch/ptrace.h
/usr/src/linux-2.6.37.6/arch/cris/include/arch-v32/arch/ptrace.h
/usr/src/linux-2.6.37.6/arch/alpha/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/mips/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/sparc/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/arch/s390/include/asm/ptrace.h
/usr/src/linux-2.6.37.6/include/linux/ptrace.h
/usr/include/linux/ptrace.h
/usr/include/sys/ptrace.h
/usr/include/asm-x86/ptrace.h
Also a lot of stuff (the ones you want are at the bottom of this list).
Here's a hint: system header files will be somewhere in an
include directory, almost always a subdirectory of
/usr -- so when you're looking for a file included in a C program that's enclosed in
<name.h>, it'll most likely be found looking in
/usr:
Code:
find /usr -name 'ptrace.h'
Too, the reason for including the
2>/dev/null is that, as a user; i.e., not
root, you will not be able to access certain directories or files and you'll get a lot of error message and what
2>/dev/null does is so you don't see the "can't access blah" messages.
Hope this helps some.