【问题标题】:How do I tweak my bash script below for searching sub directories如何调整下面的 bash 脚本以搜索子目录
【发布时间】: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


【解决方案1】:

解决方案其实很简单

find ./HomeTrasaction* -iname "*.txt" -exec grep -i "phrase" {} \;

find ./HomeTrasaction* - 在当前目录中搜索以该短语开头的每个目录。

-iname "*.txt" - 对于每个以 .txt 结尾的文件

-exec grep -i "短语" {} ; - “短语”一词的 grep

如果这仍然不清楚“man find”:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-27
    • 2016-11-30
    • 2018-04-21
    • 2014-11-22
    • 2016-01-21
    • 2016-06-27
    • 2015-09-07
    • 2014-04-09
    相关资源
    最近更新 更多