Bash 对于带有空格和一些特殊字符的循环文件
我需要使用for循环运行以下命令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
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
。,,等等。