【发布时间】:2021-01-16 13:31:27
【问题描述】:
我正在尝试对目录中的每个文件执行某些操作,但是它正在执行的顺序存在问题。它应该一次做一个文件。长线(解压缩,grepping,压缩)在没有脚本的单个文件上工作正常,因此循环存在问题。有什么想法吗?
脚本应该遍历每个压缩文件并查找 word1 或 word2。如果其中至少存在一个,则:
- 解压文件
- grep word1 和 word2 并保存到 file_done
- 删除解压文件
- 使用原始名称将 file_done 压缩到 /donefiles/
- 从原始目录中删除 file_done
#!/bin/bash
for file in *.gz; do
counter=$(zgrep -c 'word1\|word2' $file)
if [[ $counter -gt 0 ]]; then
echo $counter
for file in *.gz; do
filenoext=${file::-3}
filedone=${filenoext}_done
echo $file
echo $filenoext
echo $filedone
gunzip $file | grep 'word1\|word2' $filenoext > $filedone | rm -f $filenoext | gzip -f -c $filedone > /donefiles/$file | rm -f $filedone
done
else
echo "nothing to do here"
fi
done
【问题讨论】: