在/home/simple/0004 目录下查找后缀名为html的命令,但不对/home/simple/0004 目录下面的子目录simple进行查找
find /home/simple/0004 -path "./simple" -prune -o -name "*.html" -ls
find /home/simple/0004 -path "./simple" -prune -o -name "*.html" |xargs ls
有些不明白的地方是 -prune -o这两个参数必须相联出现,省去-o参数上面的命令将无结果返回
暂不知道 -o 参数的作用,有知道的朋友请指教!
update
-----------------------------------------------
man find 上的一个例子
find / /! -name "*.c" -print
Print out a list of all the files whose names do not end in .c.
find / -newer ttt -user wnj -print
Print out a list of all the files owned by user ``wnj'' that are
newer than the file ttt.
find / /! /( -newer ttt -user wnj /) -print
Print out a list of all the files which are not both newer than
ttt and owned by ``wnj''.
find / /( -newer ttt -or -user wnj /) -print
Print out a list of all the files that are either owned by
``wnj'' or that are newer than ttt.
find / -newerct '1 minute ago' -print
Print out a list of all the files whose inode change time is more
recent than the current time minus one minute.
find / -type f -exec echo {} /;
Use the echo(1) command to print out a list of all the files.
find -L /usr/ports/packages -type l -delete
Delete all broken symbolic links in /usr/ports/packages.
find /usr/src -name CVS -prune -o -depth +6 -print
Find files and directories that are at least seven levels deep in
the working directory /usr/src.
find /usr/src -name CVS -prune -o -mindepth 7 -print
Is not equivalent to the previous example, since -prune is not
evaluated below level seven.
find /home/simple/0004 -path "./simple" -prune -o -name "*.html" -ls
find /home/simple/0004 -path "./simple" -prune -o -name "*.html" |xargs ls
有些不明白的地方是 -prune -o这两个参数必须相联出现,省去-o参数上面的命令将无结果返回
暂不知道 -o 参数的作用,有知道的朋友请指教!
update
URL:http:
//
bbs.chinaunix.net/viewthread.php?tid=1052959&pid=7964129&page=1&extra=page%3D1#pid7964129
- o 表示 ' or ' ,用来连接 test 和action。
find / home / simple / 0004 - path " /home/simple/0004/simple " - prune - o - name " *.css " - print
用类似 shell 的语法表示的话就相当于:
for everyentry under / home / simple / 0004
( ( - path " /home/simple/0004/simple " ) && ( - prune)) || (( - name " *.css " ) && ( - print))
对于 || ,如果前面的表达式为 true ,后面的表达式就不用执行了
对于 && 则相反
- o 表示 ' or ' ,用来连接 test 和action。
find / home / simple / 0004 - path " /home/simple/0004/simple " - prune - o - name " *.css " - print
用类似 shell 的语法表示的话就相当于:
for everyentry under / home / simple / 0004
( ( - path " /home/simple/0004/simple " ) && ( - prune)) || (( - name " *.css " ) && ( - print))
对于 || ,如果前面的表达式为 true ,后面的表达式就不用执行了
对于 && 则相反
-----------------------------------------------
man find 上的一个例子
find / /! -name "*.c" -print
Print out a list of all the files whose names do not end in .c.
find / -newer ttt -user wnj -print
Print out a list of all the files owned by user ``wnj'' that are
newer than the file ttt.
find / /! /( -newer ttt -user wnj /) -print
Print out a list of all the files which are not both newer than
ttt and owned by ``wnj''.
find / /( -newer ttt -or -user wnj /) -print
Print out a list of all the files that are either owned by
``wnj'' or that are newer than ttt.
find / -newerct '1 minute ago' -print
Print out a list of all the files whose inode change time is more
recent than the current time minus one minute.
find / -type f -exec echo {} /;
Use the echo(1) command to print out a list of all the files.
find -L /usr/ports/packages -type l -delete
Delete all broken symbolic links in /usr/ports/packages.
find /usr/src -name CVS -prune -o -depth +6 -print
Find files and directories that are at least seven levels deep in
the working directory /usr/src.
find /usr/src -name CVS -prune -o -mindepth 7 -print
Is not equivalent to the previous example, since -prune is not
evaluated below level seven.