我有一个包含文件名列表(不带扩展名)的数组,例如:
filearray=("fileA" "fileB" "fileC")
这些文件分布在多个目录中。当我循环遍历目录时,我想对每个目录中存在的数组中的文件执行操作。如何对数组使用 find 或 grep?
我可以做这样的事情吗?:
Dirarray= ("dirA" "dirB")
for Dir in "${Dirarray[@]}"; do
cd "$Dir";
for file in "${filearray[@]}"; do
if find . -regextype posix-extended -regex "$file"; then;
do X;
fi;
done
done
谢谢!
答案1
我会用不同的方式来做。
Dirarray= ("dirA" "dirB")
for Dir in "${Dirarray[@]}"; do
cd "$Dir"
for file in "${filearray[@]}"; do
# Here a change. If "$file" exists...
if [[ -e "$file"]]; then
: # do something
fi
done
done
请参阅man test
参考资料 来了解更多文件测试选项。
原因是这种方式要简单得多。好吧,只要数组不包含正则表达式即可。