Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux /usr/bin/find:循环bash脚本中的参数列表太长_Linux_Bash_Find_Quoting_Glob - Fatal编程技术网

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

Linux /usr/bin/find:循环bash脚本中的参数列表太长,linux,bash,find,quoting,glob,Linux,Bash,Find,Quoting,Glob,我有这样一个bash脚本。我想将一个目录下的所有.ppm文件gzip。因此,我编写了这样一个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

我有这样一个bash脚本。我想将一个目录下的所有.ppm文件
gzip
。因此,我编写了这样一个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

如何解决此问题?

引用此部分:
*.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' {} \;

引用此部分:
*.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' {} \;

非常感谢。但此时它会得到其他没有.ppm扩展名的文件。@yusuf:您使用的是
以反转逻辑。谢谢。但此时它会得到其他没有.ppm扩展名的文件。@yusuf:您使用的是
以反转逻辑。如果出于某种原因确实需要循环,请参阅。i、 e.做
find-print0 |而IFS=read-r-d$'\0'文件;不回显“$file”;完成
如果出于某种原因确实需要循环,请参阅。i、 e.做
find-print0 |而IFS=read-r-d$'\0'文件;不回显“$file”;完成