【发布时间】:2021-01-29 01:42:50
【问题描述】:
我有一个目录,其中包含以下结构中的文件:
HomeTransaction1/Date1/transactionfile1.txt
HomeTransaction1/Date1/transactionfile1.xls
HomeTransaction1/Date1/transactionfile2.xls
HomeTransaction1/Date1/transactionfile2.txt
HomeTransaction1/Date1/transactionfile3.txt
HomeTransaction1/Date2/transactionfile1.txt
HomeTransaction1/Date3/transactionfile2.txt
HomeTransaction1/Date3/transactionfile3.txt
HomeTransaction2/Date1/transactionfile1.txt
HomeTransaction2/Date1/transactionfile2.txt
HomeTransaction3/Date1/transactionfile3.txt
我试图在以 .txt 结尾的事务文件中获取特定的东西,所以我试图想出一个 bash 脚本来实现这一点。从概念上讲,这是我的思考过程。
A - 列出当前目录中的每个文件夹。在这个例子中,它将是 HomeTransaction1、HomeTransaction2 和 HomeTransaction3
B - 对于 B 中的每个文件夹,列出所有文件夹(日期文件夹)
C - 对于步骤 B 中的每个文件夹,对扩展名为 .txt 的文件运行“grep”
这是我迄今为止想出的:
#!/bin/bash
for FILE in `ls -l`
do
if test -d $FILE && (startswith "HomeTrasaction") //I want to add a condition to check that the directory name and starts with "HomeTrasaction"
then
cd $FILE // example cd to 'HomeTransaction1' directory
echo "In HomeTransaction directory $FILE"
for SUB_FILE in `ls -l`
do
cd $SUB_FILE //example cd to 'Date1'
echo "In Date directory $FILE"
for TS_FILES in ($find . -print | grep .txt)
grep "text-to-search" $SUB_FILE
fi
done
感谢您在完成我的脚本时提供的任何帮助。谢谢。
【问题讨论】:
-
这里有很多的语法和脚本错误;我推荐shellcheck.net,但你可能不得不一次给它一点脚本,所以它不会不知所措和困惑。尽管如此...
grep "text-to-search" HomeTransaction*/*/*.txt会这样做吗(可能在grep中添加一些额外的标志来控制文件名报告)? -
快捷方式
tree HomeTransaction[0-9]*您必须确定要排除的内容,然后使用grep -v 'regex'删除不需要的扩展名。
标签: linux bash shell scripting directory-listing