linux下批量删除指定后缀的文件
eg:
find -name "*.frag" -exec dos2unix {} \;
find -name "*.s" -exec rm -f {} \;
find 命令查找文件名为 .frag 的文件,并将这些文件替换到 {} 部分从而进行删除。 ';' 前的参数都作为 rm 的参数, '/' 则是对 ';' 进行 escape(转义)。
find /etc/rc.d -name ’*crond’ -exec file {} \;
查找/etc/rc.d目录下面所有以crond结束的文件,并使用file指令查看其属性,注意:exec和file间是一个空格,file和{}间是一个空格,{}和\;之间是一个空格,\;是一个整体。
http://hi.baidu.com/smallchicken/blog/item/4fe00218bdca050a34fa41d7.html
find 命令-exec选项粗解
     为何是粗解?因为解释并不会太详细,如果需要更加详细,自己man一下。
     find 命令的 -exec 和 -execdir 还有 -ok  用来对找到的文件执行命令,{}表示文件名
     区别:
     -exec command ;  
     -exec选项对找到的文件执行命令,传递的文件名是绝对路径,分号必须,通常为了防止shell解释分号,需要添加\转义,即 \; 结束该命令,也可以使用引号括起来,比如 ';' 这样
     例,列出所有 mp3 文件:
     find . -name "*.mp3" -exec ls {} \;   
     find可以同时执行多个命令,比如 先查找,再复制
     find . -name "*.mp3" -exec ls {} \; -exec  cp {} /home/sin/Music/ \;
     多个命令之间分别以 -exec开头,然后接命令。每一个文件都会挨个执行所有命令
    -execdir 和 -exec一样,不同的是,如果你传递的查找路径中含有绝对路径,那么 -execdir 仍是相对路径,而 -exec就会是绝对路径,
     比如:find /home/fix/Music/ -name "*.mp3" -exec ls {} ';'
     输出:
     /home/fix/Music/爱的思念.mp3
     /home/fix/Music/包三姑外传-长相守.mp3
     /home/fix/Music/你潇洒我漂亮.mp3
     /home/fix/Music/竹苑情歌_背景.mp3
     /home/fix/Music/最后一次的温柔.mp3
     ..... 
     而:find /home/fix/Music/ -name "*.mp3" -execdir ls {} ';'
     输出:    
     ./爱的思念.mp3
     ./包三姑外传-长相守.mp3
     ./你潇洒我漂亮.mp3
     ./竹苑情歌_背景.mp3
     ./最后一次的温柔.mp3    
    如果命令本身查找路径为相对路径,那么 -exec 和 -execdir得到的文件名是一样的。

     -exec command {} + 则表示并不一次次执行命令,而是等所有文件找到后再执行,命令只执行一次,
     例如:
     find . -name "*.mp3" -exec ls {} + 
     表示再找到所有 mp3文件后,最后执行一次 ls命令,这时候 {} 表示所有的文件名,并且以空格分隔
     -ok 很简单,表示每次在执行命令前,需要确认一下。ok选项和exec选项一模一样,只是多了每一步必须确认
     来个实例,把所有的mp3文件编码转换一下:
     find . -iname "*.mp3" -execdir mid3iconv -e gbk {} \; -exec mid3iconv --remove-v1   {} \;
     第一个命令转换gbk编码到unicode,第二个命令防止mocp乱码,删掉 v1
 新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。
更多推荐


所有评论(0)