将匹配模式的所有文件提供给脚本的stdin

时间:2016-11-29 20:36:55

标签: bash

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

cat some_file.txt | ./myscript.sh

但是,我正在尝试创建一个循环,将脚本传递给该文件夹中的每个文件。以下是我迄今为止所做的尝试 - 并且非常有效:

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

任何想法如何添加" cat"在我的脚本中命令?

1 个答案:

答案 0 :(得分:2)

如果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