在bash中将多个文件名扩展到一个目录中

时间:2010-11-10 21:14:06

标签: linux bash

我想在几个文件上运行awk。我有文件名和文件的路径,但我似乎无法连接这两个。这是我尝试过的:


files=(a b c)
directory=/my/dir

awk $my_script "$directory/${files[@]}"

它解开了第一个文件,剩下的就剩下了。我宁愿不必在我的数组中添加完整路径(这些值在几个地方使用)。我想我想要大括号扩展,但它似乎不适用于数组。我还能做什么?

2 个答案:

答案 0 :(得分:5)

使用模式替换(#表示regexp中的^):${files[@]/#/$directory/}

答案 1 :(得分:1)

for i in /my/dir/[abc]; do
    awk $my_script "$i"
done

或者,如果你想实际上只是立即将所有文件名传递给awk:

awk $my_script /my/dir/[abc]

如果文件名实际上不是单个字母:

awk $my_script /my/dir/{file1,file2,file3,...}