for循环包含空格和一些特殊字符的文件

时间:2015-10-16 14:28:01

标签: 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

某些文件名包含" @","()"," - ","。", " []"," ' "如果那很重要

3 个答案:

答案 0 :(得分:1)

使用-exec选项

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

答案 1 :(得分:1)

我使用以下命令

完成了这项工作
find -name '*.eml' | while read email; do cat "$email" | ./locatePipe.php; done

答案 2 :(得分:0)

如果您正在使用bash 4,请跳过find

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