Shell Grep并查找匹配的文件名

Shell Grep并查找匹配的文件名,shell,unix,grep,sh,ksh,Shell,Unix,Grep,Sh,Ksh,我有一个txt文件,其中包含前缀Id的列表,我需要将其与源目录进行匹配,获得匹配的文件名并构建一个列表 我目前正在使用下面的代码来实现这一点,但我只得到列表中最后一个文件名的文件 set -A flist $(find $1 -name "*.csv" | grep "`cat ${tempfile}.txt`" 大约有10个匹配文件,但此命令仅返回最后一个文件,如有任何帮助,将不胜感激 $ cat prefixes.txt foo_[^/]*$ bar_[^/]*$ $ find . ./

我有一个txt文件,其中包含前缀Id的列表,我需要将其与源目录进行匹配,获得匹配的文件名并构建一个列表

我目前正在使用下面的代码来实现这一点,但我只得到列表中最后一个文件名的文件

set -A flist $(find $1 -name "*.csv" | grep "`cat ${tempfile}.txt`"
大约有10个匹配文件,但此命令仅返回最后一个文件,如有任何帮助,将不胜感激

$ cat prefixes.txt
foo_[^/]*$
bar_[^/]*$

$ find
.
./blah
./foo_1.txt
./bar_3.txt
./bar_4.txt
./quux_6.txt
./quux_5.txt
./prefixes.txt
./foo_2.txt

$ foo=( $(find . -name "*.txt*" | grep -f prefixes.txt) )

$ set | grep ^foo=
foo=([0]="./foo_1.txt" [1]="./bar_3.txt" [2]="./bar_4.txt" [3]="./foo_2.txt")
但是请注意,这将打破带有空格的文件名,并且可能有更好的解决方案来解决实际问题

 set -A aRray `find . -name "*" | egrep -f RegExPrefix.txt | sed "s/.*/'&'/"`

将取决于你的外壳。这里使用AIX上的ksh进行测试(因此不是GNU-sed和
set-a
create a array)

根本的问题是什么?为什么您认为需要数组中的文件名列表?