我的情况是某些目录中有不同类型的文件(具有不同的扩展名)。我不知道特定目录中存在什么类型的文件。让我们假设以下情况:
所有五个目录 1、2、3、4、5 都有一个公共路径:
/dir1/dir2/dir3/1/
/dir1/dir2/dir3/2/
/dir1/dir2/dir3/3/
/dir1/dir2/dir3/4/
/dir1/dir2/dir3/5/
简而言之,1、2、3、4、5在dir3中。
例如,
目录 1 和 3 的文件扩展名为.txt
目录 2、4、5 的文件扩展名为.gz
我现在正在这样做:
while [ $a -le 5 ]
do
cat /dir1/dir2/dir3/"$a"/*.txt | grep "string" > /path/output"$a"
zcat -f /dir1/dir2/dir3/"$a"/*.gz | grep "string" > /path/output"$a"
((a++))
done
输出已创建,但其中很少是空白的。我确定输入具有我在grep中使用的字符串。我认为我正在使用的脚本正在覆盖文件。
如何通过首先搜索文件扩展名并相应地执行 cat 或 zcat 来执行此操作?请建议?
编辑:
我还尝试了以下方法:
while [ $a -le 5 ]
do
for f in /dir1/dir2/dir3/"$a"/*.txt
do
cat $f | grep "string" > /path/output"$a"
done
for f in /dir1/dir2/dir3/"$a"/*.gz
do
cat $f | grep "string" > /path/output"$a"
done
done