find命令

1、模糊匹配需要转义字符

发现一个奇怪的现象,在git bash窗口操作如下:

Administrator@WINedr-VDI0027 MINGW64 /d/Github/Storage/linux (master)
$ find . -name *str*.*
./stream
./stream/IO_stream.cpp
./stream/IO_stream.exe
./stream/IO_stream.o
./study/str.cpp
./study/strstr.cpp
./study/struct.cpp
./study/struct_para.c
./study/struct_para.cpp
./study/study_strlen_sizeof.cpp
./study/study_strncat.cpp
./study/test_strcmp.cpp

Administrator@WINedr-VDI0027 MINGW64 /d/Github/Storage/linux (master)
$ find . -name *str*
./stream

Administrator@WINedr-VDI0027 MINGW64 /d/Github/Storage/linux (master)
$ find . -name \*str\*
./stream
./stream/IO_stream.cpp
./stream/IO_stream.exe
./stream/IO_stream.o
./study/str.cpp
./study/strstr.cpp
./study/struct.cpp
./study/struct_para.c
./study/struct_para.cpp
./study/study_strlen_sizeof.cpp
./study/study_strncat.cpp
./study/test_strcmp.cpp

Administrator@WINedr-VDI0027 MINGW64 /d/Github/Storage/linux (master)
$ find . -name "*str*"
./stream
./stream/IO_stream.cpp
./stream/IO_stream.exe
./stream/IO_stream.o
./study/str.cpp
./study/strstr.cpp
./study/struct.cpp
./study/struct_para.c
./study/struct_para.cpp
./study/study_strlen_sizeof.cpp
./study/study_strncat.cpp
./study/test_strcmp.cpp

在linux环境才找到了答案:

[root@ubuntu0006:/media/hankin/vdb/vdi-linux-client/src/vdi_session/spice-0.12.5/client] (master) #find -name *zlib*
find: 路径必须在表达式之前: zlib_decoder.h
用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec|time] [path...] [expression]

然后百度就找到了答案: https://www.cnblogs.com/veins/p/4134450.html
百度“find: 路径必须在表达式之前”就会发现需要转义,一般来说是使用双引号。

2、高级查找

不递归查找:find . -maxdepth 1 -name ".txt" 查找大小为0的文件:find . -name "" -type f -size 0c 将当前目录及其子目录中的所有文件列出:find . -type f 将当前目录及其子目录下所有最近 20 天内更新过的文件列出: # find . -ctime 20 https://www.runoob.com/linux/linux-comm-find.html

find / -type d  # 查找目录文件 find / -type f  # 查找普通文件 find / -type l  # 查找链接文件 find / -type f |xargs rm -rf   # 利用管道作为参数删除 find / -type f -exec rm -rf {} ; # ; 不能少, 前面空格不能少 rm -rf $(find / -type f)   # 查找结果直接以变量 删除 rm -rf find / -type f   # 同上做变量 删除 ps aux | grep sleep |grep -v grep |awk ‘{print $2}‘ |xargs kill -9 find -type f -size 1k  # k 是小写 find -size +1k   # 大于1k的文件 find -size -1M   # M是大写, 小于1M的文件 find -size -1G   # G是大写

3、找到指定格式文件然后删除

find . -name *.pyc | xargs rm -rf

4、一个容易遗漏的操作细节

软连接指向文件夹时,使用find命令需要增加/符号。

[root@ubuntu0006:/home] #find /home/link -name test.log
[root@ubuntu0006:/home] #find /home/link/ -name test.log
/home/link/test.log
[root@ubuntu0006:/home] #ll
总用量 7332
drwxr-xr-x  5 root      root         4096 6月  20 14:54 ./
drwxr-xr-x 25 root      root         4096 6月   7 11:20 ../
-rw-r--r--  1 root      root       125983 6月  13 16:55 config.json
-rw-r--r--  1 root      root           17 6月  18 19:55 debug.log
-rw-r--r--  1 root      root       778240 6月  14 10:25 ff83de8c766fc0daa15e45bcbf961f64
lrwxrwxrwx  1 root      root           11 6月  20 14:54 link -> /home/test//
drwxr-xr-x  4 root      root         4096 5月   9  2018 network/
-rw-r-----  1 root      root       304976 6月  14 20:00 syslog
drwxr-xr-x  2 root      root         4096 6月  20 14:54 test/
[root@ubuntu0006:/home] #ll /home/test/
总用量 8
drwxr-xr-x 2 root root 4096 6月  20 14:54 ./
drwxr-xr-x 5 root root 4096 6月  20 14:54 ../
-rw-r--r-- 1 root root    0 6月  20 14:54 test.log

results matching ""

    No results matching ""