Posts Tagged ‘find’

文件路径处理并生成处理命令

October 31st, 2008

这也是个一行命令

find ../hadoop-0.18.1/ \
‘(‘ -name "*.jar" -o -name "*.a" -o -name "*.so*" -o -name "*.gif"  -o -name "*.png" -o -name "*.jpg" -o -name "*.pdf"  ‘)’ \
-exec ‘echo’ ‘{}’ ‘{}’ ‘;’ | \
sed -ne ‘s/\([^ ]*\) \.\.\/hadoop-[\.0-9]*\/\([^\ ]*\)/cp \1 \.\/\2/p’ | \
/bin/sh

这个命令的 find 部分从平级的一个子目录中寻找各种二进制文件,然后把文件路径完整地输出两次,而之后用 sed 把第二遍的目录前缀去掉,换到本目录中的相同位置,再在前面加上 cp 命令,这就构成了一个复制命令。

嗯,这个命令算不算变态要看有多少文件要处理,并且要处理多少次类似操作,如果多的话,费这么点力气写个超长命令行还是值得的。

从svn working copy 中删除部分文件

October 31st, 2008

又是一个一句话操作

find . ‘(‘ -name "*.jar" -o -name "*.a" -o -name "*.so*" -o -name "*.gif" -o -name "*.png" -o -name "*.jpg" -o -name "*.pdf"  ‘)’  -exec ‘echo’ ‘svn’ ‘del’ ‘{}’ ‘;’|/bin/sh

这里的要点主要是 find 命令的多条件“或”操作,另外,提供了一种 find 后执行的手段——echo 送至 shell,这样的好处是可以先不添加管道后面的东东,从而观察并验证命令的正确性。这个办法是和 hoplee 老师学的,呵呵。
同理,还可以添加文件

find . ‘(‘ -name "*.jar" -o -name "*.a" -o -name "*.so*"  -o -name "*.gif" -o -name "*.png" -o -name "*.jpg" -o -name "*.pdf"  ‘)’  -exec ‘echo’ ‘svn’ ‘add’ ‘{}’ ‘;’|grep -v ‘\.svn\/’|/bin/sh

只是要注意,放在 .svn/ 中的是 svn 的结构性文件,不能也添加进仓库的。

md5sum 收集并排序

October 25th, 2008

下了一个openclipart 的 daily 发布包,所有文件是按照用户名排序的,文件辨识分类很困难,不管别的了,先选择所有 svg 文件,计算 md5sum,并提取不包含路径的文件名、然后按文件名排序,方便索引。

find . -name "*.svg" -exec ‘md5sum’ ‘{}’ | \
sed -e "s/\([^ ]*\) .*\/\([-a-zA-Z0-9_().]*\.svg\)/\2,\1/g" | \
sort  > md5sums_sorted.csv

md5sum 的输出结果是 md5sum 路径名,这里去掉了前面的路径,只保留文件名,然后把它放在前面,md5sum放在后面,中间用逗号分开,构成csv格式,文件名包括字母、数字、横线、下划线、括号和点。

文件成分判别

October 15th, 2008

目录中文件成分判断:

find . -type f -exec 'file' '{}' ';' |cut -d: -f2| cut -d, -f1|sort|uniq -c|sort -n

首先利用 find 和 file,列出所有普通文件的类型描述,然后舍弃文件名,取出描述的主要部分,进行排序后统计数量,最终将统计出来的数量结果按大小个排序,输出的效果类似这样:

      1  exported SGML document text      1  gzip compressed data      2  ms-windows icon resource - 1 icon      2  Perl5 module source text      4  Bourne-Again shell script text executable     11  ASCII C++ program text     12  JPEG image data     13  PDF document     21  Zip archive data     35  GIF image data     36  ASCII text     37  HTML document text     40  PNG image data     50  Bourne shell script text executable     63  XML document text     88  ASCII C program text    777  ASCII English text

Switch to our mobile site