Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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 将与模式匹配的所有文件馈送到脚本的stdin中_Bash - Fatal编程技术网

Bash 将与模式匹配的所有文件馈送到脚本的stdin中

Bash 将与模式匹配的所有文件馈送到脚本的stdin中,bash,Bash,我有一个包含10000个txt文件的文件夹,还有一个shell脚本,如果在单个文件上使用,它的工作方式如下: cat some_file.txt | ./myscript.sh 但是,我试图创建一个循环,将脚本传递到该文件夹中的每个文件。以下是我迄今为止所做的尝试——以及所做的工作: for f in /Users/me/desktop/folder*.txt; do ./myscript.sh “$f”; done 您知道如何在我的脚本中添加“cat”命令吗?如果myscript.sh的一

我有一个包含10000个txt文件的文件夹,还有一个shell脚本,如果在单个文件上使用,它的工作方式如下:

cat some_file.txt | ./myscript.sh
但是,我试图创建一个循环,将脚本传递到该文件夹中的每个文件。以下是我迄今为止所做的尝试——以及所做的工作:

for f in /Users/me/desktop/folder*.txt; do ./myscript.sh “$f”; done

您知道如何在我的脚本中添加“cat”命令吗?

如果
myscript.sh
的一个实例足以满足所有文件的内容:

find /Users/me/desktop/ -maxdepth 1 -type f -name 'folder*.txt' \
  -exec cat {} + | ./myscript.sh
…这将使
find
为每批文件调用一个
cat
实例,直到操作系统的命令行长度限制,并将所有这些
cat
实例的结果以单个流形式输入到
myscript.sh
的一个实例中


或者,如果要为每个文件创建不同的脚本实例,请执行以下操作:

for f in /Users/me/desktop/folder*.txt; do ./myscript.sh <"$f"; done

用于f in/Users/me/desktop/folder*.txt;如果
myscript.sh
的一个实例足以满足所有文件的内容,请执行./myscript.sh:

find /Users/me/desktop/ -maxdepth 1 -type f -name 'folder*.txt' \
  -exec cat {} + | ./myscript.sh
…这将使
find
为每批文件调用一个
cat
实例,直到操作系统的命令行长度限制,并将所有这些
cat
实例的结果以单个流形式输入到
myscript.sh
的一个实例中


或者,如果要为每个文件创建不同的脚本实例,请执行以下操作:

for f in /Users/me/desktop/folder*.txt; do ./myscript.sh <"$f"; done


用于f in/Users/me/desktop/folder*.txt;do./myscript.sh您的报价是Microsoft SmartQuotes,而不是真实报价。您的代码是否有可能是从Word文档或Outlook电子邮件等中复制和粘贴的?也就是说,
“$f”
“$f”
完全不同。(另一方面,使用
.sh
扩展——特别是对于不是POSIX sh脚本的bash脚本来说——不是理想的形式:它错误地暗示脚本可以与
sh yourscript.sh
一起运行,而且意味着如果您用完全不同的语言重写它,您需要保留一个误导性的文本(选择或修改所有呼叫者以使用新名称)。你如何区分OSX默认开启的智能报价和Microsoft SmartQuotes之间的区别?@that otherguy,…OSX做了一些愚蠢的事情?我不知道。叹气。你的报价是Microsoft SmartQuotes,不是真正的报价。你的代码有没有可能是从Word文档或Outlook电子邮件等复制粘贴的?也就是说,
“$f”
“$f”
完全不同。(另一方面,使用
.sh
扩展——特别是对于不是POSIX sh脚本的bash脚本来说——不是理想的形式:它错误地暗示脚本可以与
sh yourscript.sh
一起运行,而且意味着如果您用完全不同的语言重写它,您需要保留一个误导性的文本(选择或修改所有呼叫者以使用新名称)。你如何区分OSX默认开启的智能报价和Microsoft智能报价之间的区别?@另一个人,…OSX做了一些愚蠢的事情?我不知道。叹气。你的发现需要深度=1,或者它可以在子目录中找到文件,这是不等价的。@Jean Françoisfare,是的,我有一个编辑添加了
-maxdepth 1
已经开始了。只是为了学究:)@Jean-Françoisfare,……如果我反对的话,我会想到一些关于壶和水壶的事情。:)这就是为什么我允许自己对此发表评论。我知道你不会介意的。你的发现需要有深度=1,或者它可以在子目录中找到文件,这是不等价的。@Jean-Françoisfar,是的,我有一个编辑添加
-maxdepth 1
。只是为了学究:)@Jean-Françoisfar,…如果我反对的话,我会想到一些关于壶和壶的东西。:)这就是为什么我允许自己对此发表评论。我知道你不会介意的。