1、查找重复的文件(基于md5)
find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-
2、寻找最大的10个文件
find / -type f 2>/dev/null | xargs du 2>/dev/null | sort -n | tail -n 10 | cut -f 2 | xargs -n 1 du -h
3、寻找文件名长度前10的文件
find | sed -e "s/^.*\///" | awk ' BEGIN { FS=""} { print NF " " $0 } ' | sort -nrf | head -10
4、递归列出最新修改的文件
find . -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort
5、找到包含 pattern 的所有文件,使用vi打开它们并把光标置于第一个匹配的位置(使用'n'和':n'进行导航)
find . -type f -exec grep -l pattern {} \; | xargs vi +/pattern
6、删除所有 文件名不为 abc 的文件
find * -maxdepth 1 -type f ! -name abc -delete
7、文件大小求和
find . -type f -printf %s\\n | paste -sd+ | bc
8、删除文件名符合特定格式的并且15天前的文件
find /backup/directory -name "FILENAME_*" -mtime +15 | xargs rm -vf
9、将子目录的所有内容都移动到当前目录
find -type f -exec mv {} . \;
10、在adb 上 安装整个文件夹中的.apk
find ~/path/to/apk/files -name '*.apk' -exec adb install {} \;
11、递归修改目录为777
find . -exec chmod 777 {} \;
12、带有完整路径ls命令
find `pwd` -maxdepth 1 -exec ls --color -d {} \;
13、当前目录里边文本文件的个数
file -i * | grep 'text/plain' | wc -l
14、将缺少.md5的文件 自动补上.md5
find . ! -name \*.md5 -exec 'md5sum "{}" > "{}".md5' \;
15、用find删除文件时候排除特定文件
find . ! -name -delete
16、递归删除空目录
find . -depth -type d -empty -exec rmdir -v {} +
17、把 子目录 添加到 svn ignore 中(忽略)
find . -type d -not \( -name .svn -prune \) -exec svn propset svn:ignore '*' {} \;
18、寻找main文件 cpp
find . -name "*.cpp" -exec grep -Hn --color=tty -d skip "main" {} \;
19、执行前检查
find /tmp -type f -printf 'rm "%p";\n'
20、递归的改变扩展名
find . -type f -name \*.c | while read f; do mv $f "`basename $f .c`".C; done
21、使用 find sed 批量重命名
find . -exec bash -c "mv '{}' '\`echo {} |sed -e 's/foo/bar/g'\`"' \;
22、查找文件并计算md5
find -type f | grep -v "^./.git" | xargs md5sum | md5sum
23、 模拟DOS 的 tree
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
24、运行多个脚本
find /var/scripts -name 'backup*' -exec {} ';'
25、列出用户目录下具有指定格式后缀的文件,然后移除文件后缀
find /home -print -exec rename -v 's/_2009-09-04.suffix$//' {} \;
26、计算指定扩展名的所有文件的总大小,单位为MB
find . -type f -iname '*.msh' -exec ls -lG {} \; | awk '{total = total + $4}END{print "scale=2;" total "/2^20"}' | bc
27、修改当前目录中所有目录的权限
find ./ -type d | xargs sudo chmod 755
28、统计代码行数,返回总和
find . \( -iname '*.cpp' -o -iname '*.h' \) -exec wc -l {} \; | sort -n | cut --delimiter=. -f 1 | awk '{s+=$1} END {print s}'
29、递归的在当前目录中所有的c++文件中搜索
find . -name '*.?pp' | xargs grep -H "string"
30、递归的打印工作目录内的所有硬链接
find . -type f -a \! -links 1
31、制作一个zip压缩包,将.svn目录排除在
find . -not \( -name .svn -prune \) -type f | xargs zip XXXXX.zip
32、递归给.sh加权限
find ./ -name "*.sh" -exec chmod +x {} \;
33、显示排序列表文件的大小超过1MB的当前目录
find . -maxdepth 1 -type f -size +1M -printf "%f:%s\n" | sort -t":" -k2
34、使用file查看设备信息(man file查看更多关于file的信息)
file -s /dev/sd*
35、找出超过设置尺寸的所有文件并且按设置的格式显示
find / -type f -size +512000 | xargs ls -lh | awk '{ print $5 " " $6$7 ": " $9 }'
36、批量编码转换
find . -iname *.java -type f -exec bash -c "iconv -f GBK -t UTF-8 {} > {}.tmp " \; -exec mv {}.tmp {} \;
37、清理 ._ 文件 (OS X)
find . -name ._\* -exec rm -f {} \;
38、选择性的grep
find /path -name \*.php -user nobody -exec grep -nH whatever {} \; grep selectively
39、寻找文件并且按照修改时间排序
find -type f | xargs ls -1tr