Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
Bash 对于带有空格和一些特殊字符的循环文件_Bash_For Loop_Pipe_Special Characters_Filenames - Fatal编程技术网

Bash 对于带有空格和一些特殊字符的循环文件

Bash 对于带有空格和一些特殊字符的循环文件,bash,for-loop,pipe,special-characters,filenames,Bash,For Loop,Pipe,Special Characters,Filenames,我需要使用for循环运行以下命令 cat Locate\ Message.eml | ./locatePipe.php 我正在尝试以下操作,但是它似乎在文件名的第一个空格处出现了中断 for i in $(find -name "*.eml"); do cat $i | ./locatePipe.php; done 一些文件名包含“@”、“()”、“-”、“[]”、“'”,如果这很重要,请使用-exec选项 find -name '*.eml' -exec cat {} + | ./loca

我需要使用for循环运行以下命令

cat Locate\ Message.eml | ./locatePipe.php
我正在尝试以下操作,但是它似乎在文件名的第一个空格处出现了中断

for i in $(find -name "*.eml"); do cat $i | ./locatePipe.php; done

一些文件名包含“@”、“()”、“-”、“[]”、“'”,如果这很重要,请使用
-exec
选项

find -name '*.eml' -exec cat {} + | ./locatePipe.php

如果您使用的是
bash
4,只需跳过使用
find

shopt -s globstar
for i in **/*.eml; do
    cat "$i"
done | ./locatePipe.php

我使用以下命令完成了这项工作

find -name '*.eml' | while read email; do cat "$email" | ./locatePipe.php; done

我需要使用for循环,因为它太多,无法一次处理。这种方法最终会导致内存问题,然后使用
find-name'*.eml'-execbash-c'cat{}./locatePipe.php'\
-exec cat{}+
将向每次调用
cat
传递尽可能多的文件;与使用for循环相比,您应该拥有更少的进程,for循环将为每个文件启动一个
cat
。,,等等。