Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找文件,功能很强大。由于find具有强大的功能,所以它的选项也很多,需要我们花时间来了解。
命令格式:
find pathname -options [-print -exec -ok ...]
命令功能:
用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
命令参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command‘ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行 每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
执行命令操作时,我先在Linux中建立一个name文件。
[[email protected] ~]$ mkdir name [[email protected] ~]$ ls Desktop Documents Downloads Music name Pictures Public Templates Videos
-name 按照文件名来查找文件。
[[email protected] ~]$ ls Desktop Documents Downloads Music name Pictures Public Templates Videos [[email protected] ~]$ find -name name //查找文件名为name的文件 ./name [[email protected] ~]$ find . -name "*.txt" -print //在当前目录查找.txt文件并显示 ./test.txt [[email protected] ~]$ find ~ -name "*.xml" -print //在$ HOME中查找.xml文件并显示 /home/ningning/.gconf/desktop/%gconf.xml /home/ningning/.gconf/desktop/gnome/accessibility/%gconf.xml /home/ningning/.gconf/desktop/gnome/accessibility/keyboard/%gconf.xml /home/ningning/.gconf/desktop/gnome/%gconf.xml /home/ningning/.gconf/apps/nautilus/%gconf.xml [[email protected] ~]$ find -name "[A-Z]*" -print //查找以大写字母开头的文件 ./Downloads ./.gconf/apps/gnome-terminal/profiles/Default ./Templates ./Documents ./Music ./Pictures ./Public ./Videos ./Desktop [[email protected] ~]$ find -name "P*" -print //查找以大写字母P开头的文件 ./Pictures ./Public [[email protected] ~]$ find -name "*s" -print //查找以小写字母s结尾的文件 ./.xsession-errors ./.gvfs ./.gnome2/keyrings ./.gnome2/panel2.d/default/launchers ./.gnome2/nautilus-scripts ./.dbus ./.dbus/session-bus ./.gnote/addins ./.mozilla/plugins ./.mozilla/extensions ./Downloads ./.gtk-bookmarks ./.local/share/applications ./.local/share/.converted-launchers ./.nautilus ./.gconf/apps ./Templates ./Documents ./Pictures ./Videos [[email protected] ~]$ find -name "[a-z]*" -print //查找以小写字母开头的文件 ./.gnome2/keyrings ./.gnome2/keyrings/login.keyring ./.dbus/session-bus ./.dbus/session-bus/dcd26acd87eabb5cc6f2133500000028-0 ./.gnote/addins ./.mozilla/plugins ./.mozilla/extensions ./.gnupg/pubring.gpg ./.cache/event-sound-cache.tdb.dcd26acd87eabb5cc6f2133500000028.i386-redhat-linux-gnu ./.pulse/dcd26acd87eabb5cc6f2133500000028-card-database.tdb ./name ./.gconf/desktop ./.gconf/desktop/gnome ./.gconf/desktop/gnome/accessibility
-perm 按照文件的权限来查找文件
[[email protected] ~]$ find . -perm 755 -print //查找权限755的文件 ./.gnome2 ./.gnome2/nautilus-scripts ./.fontconfig ./.mozilla ./.mozilla/plugins ./.mozilla/extensions ./Downloads ./.cache ./.local ./.local/share ./.local/share/applications ./.nautilus ./.config ./.config/gnome-session ./.config/gnome-session/saved-session ./.config/gnome-disk-utility ./.config/gnome-disk-utility/ata-smart-ignore ./Templates ./Documents ./Music ./Pictures ./Public ./Videos ./Desktop //注意ok和exec的用法 [[email protected] ~]$ find -perm -007 -ok -l{} \; // #查所有用户都可读写执行的文件同-perm 777 < -l{} ... ./.pulse/dcd26acd87eabb5cc6f2133500000028-runtime > ? y find: `-l./.pulse/dcd26acd87eabb5cc6f2133500000028-runtime‘: No such file or directory [[email protected] ~]$ find -perm -007 -exec -l{} \; find: `-l./.pulse/dcd26acd87eabb5cc6f2133500000028-runtime‘: No such file or directory
-user 按照文件属主来查找文件
[[email protected] ~]$ find / -user ningning /proc/14301/task/14301/cwd /proc/14301/task/14301/root /proc/14301/task/14301/exe /proc/14301/task/14301/mounts /proc/14301/task/14301/mountinfo /proc/14301/task/14301/clear_refs /proc/14301/task/14301/smaps /proc/14301/task/14301/pagemap /proc/14301/task/14301/attr /proc/14301/task/14301/attr/current /proc/14301/task/14301/attr/prev /proc/14301/task/14301/attr/exec /proc/14301/task/14301/attr/fscreate /proc/14301/task/14301/attr/keycreate /proc/14301/task/14301/attr/sockcreate /proc/14301/task/14301/wchan /proc/14301/task/14301/stack /proc/14301/task/14301
-group 按照文件所属的组来查找文件
find: `/proc/27825/fd/5‘: No such file or directory /proc/27825/fdinfo /proc/27825/fdinfo/0 /proc/27825/fdinfo/1 /proc/27825/fdinfo/2 /proc/27825/fdinfo/3 /proc/27825/fdinfo/4 find: `/proc/27825/fdinfo/5‘: No such file or directory /proc/27825/ns /proc/27825/ns/net /proc/27825/ns/uts /proc/27825/ns/ipc /proc/27825/ns/mnt /proc/27825/ns/pid /proc/27825/net /proc/27825/environ /proc/27825/auxv
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find / -nouser 查找在系统中属于作废用户的文件
[[email protected] ~]$ find / -nouser find: `/proc/1356/fd‘: Permission denied find: `/proc/1356/fdinfo‘: Permission denied find: `/proc/1356/ns‘: Permission denied find: `/proc/1357/task/1357/fd‘: Permission denied find: `/proc/1357/task/1357/fdinfo‘: Permission denied find: `/proc/1357/task/1357/ns‘: Permission denied find: `/proc/1357/fd‘: Permission denied find: `/proc/1357/fdinfo‘: Permission denied find: `/proc/1357/ns‘: Permission denied find: `/proc/1382/task/1382/fd‘: Permission denied
-type 查找某一类型文件
b 块设备文件
d 目录
c 字符设备文件
p 管道文件
l 链接字符文件
f 普通文件
[[email protected] ~]$ find -type d -print . ./.gvfs ./.gnome2 ./.gnome2/keyrings ./.gnome2/panel2.d ./.gnome2/panel2.d/default ./.gnome2/panel2.d/default/launchers ./.gnome2/nautilus-scripts ./.dbus ./.dbus/session-bus ./.gnote ./.gnote/addins ./.ssh ./.fontconfig ./.mozilla ./.mozilla/plugins ./.mozilla/extensions ./Downloads ./.gnupg ./.cache [[email protected] ~]$ find -type f -exec -l{} \; //查看目录下所有普通文件 find: `-l./.dmrc‘: No such file or directory find: `-l./.xsession-errors‘: No such file or directory find: `-l./.gnome2/keyrings/login.keyring‘: No such file or directory find: `-l./.dbus/session-bus/dcd26acd87eabb5cc6f2133500000028-0‘: No such file or directory find: `-l./.gnote/36595867-4cc7-4b1f-b298-b25e9c2080ac.note‘: No such file or directory find: `-l./.gnote/9d4d7c5c-d46e-42eb-8d7f-ed5921568770.note‘: No such file or directory find: `-l./.bash_profile‘: No such file or directory find: `-l./.fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le32d4.cache-3‘: No such file or directory find: `-l./.bashrc‘: No such file or directory find: `-l./.pulse-cookie‘: No such file or directory
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件以字节计。
[[email protected] ~]$ find . -size 1000c -print //查找长度为1000c的文件 [[email protected] ~]$ find . -size +1000c -print //查找长度大于1000c的文件 . ./.xsession-errors ./.gvfs ./.gnome2 ./.gnome2/keyrings ./.gnome2/panel2.d ./.gnome2/panel2.d/default ./.gnome2/panel2.d/default/launchers ./.gnome2/nautilus-scripts ./.dbus ./.dbus/session-bus ./.gnote ./.gnote/36595867-4cc7-4b1f-b298-b25e9c2080ac.note ./.gnote/addins ./.gnote/9d4d7c5c-d46e-42eb-8d7f-ed5921568770.note ./.ssh ./.fontconfig ./.fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le32d4.cache-3 ./.mozilla ./.mozilla/plugins ./.mozilla/extensions ./Downloads ./.gnupg [[email protected] ~]$ find . -size +10 -print //查长度超过期作废10块的文件(1块=512字节) ./.gnupg/gpg.conf ./.cache/event-sound-cache.tdb.dcd26acd87eabb5cc6f2133500000028.i386-redhat-linux-gnu ./.pulse/dcd26acd87eabb5cc6f2133500000028-device-volumes.tdb ./.pulse/dcd26acd87eabb5cc6f2133500000028-stream-volumes.tdb ./.local/share/gvfs-metadata/home-6751745f.log ./.gconfd/saved_state ./.gstreamer-0.10/registry.i686.bin ./Desktop/gnome-terminal.desktop
查找一个文件大小为5556字节的文件
[[email protected] ~]$ find /ningning -size -5557c -size +5555c -exec ls -ld{} \;