Grep并找到匹配的文件名

时间:2014-03-20 08:25:37

标签: shell unix grep sh ksh

我有一个包含前缀ID列表的txt文件,我需要将其与源目录匹配并获取匹配的文件名并构建列表。

我目前使用以下代码来实现此目的,但我只获取列表中最后一个文件名的文件

set -A flist $(find $1 -name "*.csv" | grep "`cat ${tempfile}.txt`"

有大约10个匹配的文件但是这个命令只返回最后一个文件,任何帮助都将不胜感激

2 个答案:

答案 0 :(得分:1)

$ 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")

请注意,这会破坏具有空格的文件名,并且可能有更好的解决方案来解决您的实际问题。

答案 1 :(得分:0)

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

取决于你的shell。这是在AIX上用ksh测试的(所以不是GNU sed和set -A创建一个数组)