文件路径处理并生成处理命令
这也是个一行命令
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 命令,这就构成了一个复制命令。
嗯,这个命令算不算变态要看有多少文件要处理,并且要处理多少次类似操作,如果多的话,费这么点力气写个超长命令行还是值得的。