首页 > 解决方案 > 循环遍历bash中的两个目录

问题描述

我有两个目录,每个目录有 50 个文件(例如),我需要按顺序进行比较。

说 dir1/file00 需要与 dir2/file00 比较,dir1/file01 与 dir2/file01 比较,dir1/file02 与 dir2/file02 等等。

我有一个 python 脚本来进行我需要在 shell 脚本中调用的比较。我将如何遍历这两个目录并将文件作为参数传递给 python 脚本?我需要将两个目录中的文件依次传递给脚本。

抱歉,如果以前有人问过这个问题,我在任何地方都找不到好的解决方案,而且我对 shellscripting 还是很陌生。

标签: linuxbashshell

解决方案


很多方法。如果您提前知道名称,请大括号展开

for num in {00..49}; do
    compare "dir1/file$num" "dir2/file$num"
done

如果上限在变量中,则类似 C 的for 循环可能更合适:

maxfile=49
for (( i = 0; i <= maxfile; i++ )); do
  printf -v file "file%02d" $i # Assign to variable instead of printing
  compare "dir1/$file" "dir2/$file"
done

推荐阅读