我正在处理我的第一个脚本,它是压缩系统上的所有elf可执行文件。使用查找,文件和upx的全系列elf压缩脚本
find/* -executable -type f -exec file '{}' \; | grep ELF | sed -e "s/[:].*//" |
upx --best --ultra-brute
UPX不响应发送的文件
我正在处理我的第一个脚本,它是压缩系统上的所有elf可执行文件。使用查找,文件和upx的全系列elf压缩脚本
find/* -executable -type f -exec file '{}' \; | grep ELF | sed -e "s/[:].*//" |
upx --best --ultra-brute
UPX不响应发送的文件
不知道,如果你为你的系统会以安全的方式(你不希望过滤至少共享库?),但我建议:
find/-executable -type f | xargs file |\
grep ELF | cut -d: -f1 | xargs upx --best --ultra-brute
如果在文件空白名
find/-executable -type f -print0 | xargs -0 file |\
grep ELF | cut -d: -f1 | xargs -0 upx --best --ultra-brute
,但很可能你会碰到一个shell限制(xargs的:参数线太长)
一种解决方法是使用一个循环:
find/-executable -type f -print0 | xargs -0 file |\
grep ELF | cut -d: -f1 |\
while read f
do
upx --best --ultra-brute "$f"
done
您需要包括在exec
论点管。我这样做,与sh -c
:
find/* -executable -type f -exec sh -c 'file '{}' \
| grep -q ELF' \; -print \
| upx --best --ultra-brute
而且我在这里使用-print
,而不是你的施工sed
。这样更好,因为如果你在文件名中有:
,基于sed的解决方案将不起作用(更好的是-print0
和xargs -0
)。
可能的重复[如何包含管道|在我的Linux找到-exec命令?](http://stackoverflow.com/questions/307015/how-do-i-include-a-pipe-in-my-linux-find-exec-command) – 2012-08-03 02:07:13
也许,我如果是这样的话,我们会在一秒钟之内改变它。如果是这样,我不知道我在看什么。 – Josh 2012-08-03 02:09:36
约翰,你是对的。 – Josh 2012-08-03 02:15:56