我有一个包含前缀ID列表的txt文件,我需要将其与源目录匹配并获取匹配的文件名并构建列表。
我目前使用以下代码来实现此目的,但我只获取列表中最后一个文件名的文件
set -A flist $(find $1 -name "*.csv" | grep "`cat ${tempfile}.txt`"
有大约10个匹配的文件但是这个命令只返回最后一个文件,任何帮助都将不胜感激
答案 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
创建一个数组)