Bash 用于循环遍历两个文件夹

Bash 用于循环遍历两个文件夹,bash,for-loop,comparison,Bash,For Loop,Comparison,我有两个文件夹要比较,但仅仅使用diff-r来比较并不是那么简单 我使用的不是diff,而是一个小的条件函数。也许函数本身很重要,所以我将把它粘贴在这里 function timeDiff() { local time1="$(head -n 1 "$1")" local time2="$(head -n 1 "$2")" echo $time1 echo $time2 if (( "$time1" < 60)) && (( "$time2" <

我有两个文件夹要比较,但仅仅使用diff-r来比较并不是那么简单

我使用的不是diff,而是一个小的条件函数。也许函数本身很重要,所以我将把它粘贴在这里

function timeDiff() {

local time1="$(head -n 1 "$1")"

local time2="$(head -n 1 "$2")"

    echo $time1
  echo $time2

  if (( "$time1" < 60)) && (( "$time2" < 60)); then  

  echo No comparision needed. 

  else

    diff $1 $2

    fi
}
这是我眼中的盐。第二个功能。其目的是(可能包含伪代码):

  • 在for循环中,遍历两个文件夹,取第一个文件
    1.txt
    ,检查第二个文件夹中是否有同名的文件
    1.txt
    ,如果有,对它们运行
    timeDiff
    函数,然后转到下一个文件(
    1/2.txt``2/2.txt
    )等等
  • 目前,第二个函数如下所示:

    Folder name: 1    Folder name: 2
    1.txt             1.txt
    2.txt             2.txt
    
    function recuDiff() {
        for file1 in $1 && file2 in $2
        do
         timeDiff $file1 $file2
        done
    
    }
    
    我尝试了好几次,但我似乎没有找到一种方法,至少在多个条件下运行for循环

    function recuDiff {
      find 1 -maxdepth 1 -mindepth 1 -printf '%P\n' |
      while read each
      do
        if [ -e 2/"$each" ]
        then
          timeDiff {1,2}/"$each"
        fi
      done
    }
    
  • 1
  • 如果
    2
    中存在对象,请运行
    timeDiff
  • 然而,我必须说,更好/更容易做的事情是检查一下
    对于
    timeDiff

    @SandyElms中不存在的文件:抱歉,添加错误。在原始代码中未出现此项;)
    for
    循环中的
    in
    关键字不会检查目录中是否存在文件。看@dziki看到我的最后一句话了,我刚刚加了它