Find
语法
请不要输入[]
find [路径] [匹配条件] [动作]使用
查找指定文件名
例:要找 hello.txt
find ./ -name "hello.txt"如果要不区分英文大小写,可以用 -iname 这个选项
find ./ -iname "hello.txt"这样不管是 hello.txt 或 Hello.txt 或 HELLO.txt 都可以找得出来,
查找包含关键字的文件或目录
例:查找包含README的文件或目录
find ./ -name "*README*"例:查找包含README的文件
find ./ -name "*README*" -type f例:查找包含README的目录
find ./ -name "*README*" -type dFind 找到特定文件后,并且移动mv这些文件
把当前目录有 “Star” 关键字档名移动到 bar 资料夹
find ./ -name "*Star*" -type f | xargs -i mv {} bar如果找到的文件名称包含空白需加上 -print0
find ./ -name "*Star*" -type f -print0 | xargs -0 -i mv {} barFind 找到特定文件后,并且移动复制cp这些文件
把当前目录有 “Star” 关键字档名复制到 bar 资料夹
find ./ -name "*Star*" -type f | xargs -i cp {} barFind 找到特定文件后,并且移动删除rm这些文件
把当前目录有 “Star” 关键字档名给删除
find ./ -name "*Star*" -type f | xargs rm找到 *.md 文件 并删掉(文件名称有空白或太长要加 -print0 选项)
find /site -name "*.zh-tw.md" -type f -print0 | xargs -0 rmFind 找到特定文件后,并且搜寻grep这些文件内的文字
把当前目录 tif 档中的 “main” 关键字找出来
find ./ -name "*.tif" -print0 | xargs -0 grep -r "main" --color
find ./ -name "*.tif" -print0 | xargs -0 ag "main"将两类别关键字的文件 (*.tif 档和 *.h 档) 找出来进行搜寻
find ./ \( -name "*.tif" -o -name "*.h" \) -print0 | xargs -0 grep "stdio"
find ./ \( -name "*.tif" -o -name "*.h" \) -print0 | xargs -0 ag "stdio"找出执行档类型
find -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'根据上例子,找到特定文件后,并且搜寻 grep 这些文件内的文字,假如有搜寻到特定文字的话在作移动mv / 复制cp / 删除rm这些文件,这是进阶中的进阶技巧了! 把当前目录 tif 档内容中包含 “main” 关键字的文件找出来后移动mv文件到 out 资料夹
find ./ -name "*.tif" -print0 | xargs -0 grep -rIl "main" | xargs -i mv {} out把当前目录 tif 档内容中包含 “main” 关键字的文件找出来后复制cp文件到 out 资料夹
find ./ -name "*.tif" -print0 | xargs -0 grep -rIl "main" | xargs -i cp {} out把当前目录 tif 档内容中包含 “main” 关键字的文件找出来后删除rm
find ./ -name "*.tif" -print0 | xargs -0 grep -rIl "main" | xargs rmFind 找到特定文件后,并且取代sed这些文件内的文字
例:把当前目录 tif 文件找出来后用sed将文件内容的 “Star” 取代成 “bar”
find ./ -name "*.tif" -print0 | xargs -0 sed -i 's/Star/bar/g'Find 根据文件大小来找
找出大于500M的文件
find ./ -size +500M找出大于2G的文件
find ./ -size +2Gor
find ./ -size +2048M找出小于160k的jpg照片并且删除
find ./ -name "*.jpg" -size -160k -delete找出大于160k的jpg照片并且删除
find ./ -name "*.jpg" -size +160k -delete其他单位使用 c:for bytes k:for Kilobytes (units of 1024 bytes) M:for Megabytes (units of 1048576 bytes) G:for Gigabytes (units of 1073741824 bytes)
Find 根据文件修改日期来找
用 find 指令寻找当前目录下在 5 分钟以内变动过的所有文件
find ./ -type f -mmin -5用 find 指令寻找当前目录下超过 5 分钟以上变动过的所有文件,同时也是 5 分钟内没有变动过的所有文件
find ./ -type f -mmin +5用 find 指令寻找当前目录下最后 5 分钟到 10 分钟内变动过的所有文件,
find ./ -type f -mmin +5 -mmin -10用 find 指令寻找当前目录下 3 天内变动过的所有文件,
find ./ -type f -mtime -3几个选项的差异 amin:文件的最后存取时间(last access),时间单位为分钟 atime:文件的最后存取时间(last access),时间单位为天 cmin:文件的状态资讯最后修改的时间(last change),时间单位为分钟 ctime:文件的状态资讯最后修改的时间(last change),时间单位为天 mmin:文件的最后修改时间(last modify),时间单位为分钟 mtime:文件的最后修改时间(last modify),时间单位为天
Find排除目录
find 排除单个目录 例:排除单一目录,假如 find txt 文字档时要排除当前 test 目录,指令如下:
find ./ -name "*.txt" -path "./test" -prune -o -printfind 排除多个目录 例:排除当前 test 与 tools 目录,指令如下:
find ./ -name "*.txt" -path "./test" -prune -o -path "./tools" -prune -o -print排除 2 个以上目录的指令就依此类推
Find 计算找到的文件数量
如果想要计算 find 找到文件结果的数量的话可以配合 wc 这个指令,这边示范找当前目录下副档名为 jpg 的文件数量
find ./ -name "*.jpg" | wc -l