【发布时间】:2022-01-12 09:25:05
【问题描述】:
我有以下目录结构
./a/unknown.txt
./b/unknown.txt
我想要实现的是
cat {a,b}/*.txt
问题是我事先不知道a 和b,而是我将它们放在这样的数组中
dirs=(a b)
现在,我正在尝试cat ${dirs[@]}/*.txt,但它不起作用。我也尝试过其他的变体,但没有成功。我得到的最接近的是cat ${dirs[@]/%//*.txt},但这不会扩展*。在开头添加eval 可以解决问题,但我觉得需要一种更聪明的方法。
我知道我可以遍历 dirs 并实现我想要的,但我对这个解决方案不感兴趣。
【问题讨论】:
-
除了使用eval没有别的办法。
-
请注意,您可以将
cat ${^dirs}/*.txt写入zsh。也就是说,zsh提供了很多 用于交互使用的快捷方式,但除非你大量使用,否则它们的可读性远不如the loop suggested by @user1934428 .
标签: bash shell wildcard glob brace-expansion