/ usr / bin / find:for循环bash脚本中的参数列表太长

时间:2016-05-15 16:56:22

标签: linux bash find quoting glob

我有这样一个bash脚本。我想将gzip目录下的所有 .ppm 文件发送到另一个目录。出于这个原因,我写了这样一个bash脚本:

cd /export/students/sait/12-may
for next_file in  $(find . -type f  ! -name *.ppm )
do
/bin/gzip -f -c $next_file > /export/students/sait/12-may-yedek/$next_file.gz
done

当我执行此脚本时,我收到了这样的错误:

/usr/bin/find: Argument list too long

如何解决此问题?

1 个答案:

答案 0 :(得分:6)

引用此部分:*.ppm以阻止文件名通配,并删除!,因为您要查找扩展名为.ppm的文件,而不是相反。

find . -type f  -name '*.ppm'

<小时/> 您可以使用单find命令执行此操作,而不是运行循环,这将提供空白区域安全:

find /export/students/sait/12-may -type f -name '*.ppm' -exec sh -c '/bin/gzip -f -c "$0" > "$0".gz' {} \;