在每个子目录中查找比另一个文件更新的文件

Arc*_*SyS 7 bash find shell-script

我有这样的文件夹结构

/Class/Student/Unit/files
Run Code Online (Sandbox Code Playgroud)

每个 Unit 文件夹都包含一个文件MarkSheet*,当我标记学生作业时会更新该文件。

我需要一个脚本来测试学生上传的文件是否比我上次标记他们的作品时更新。

以下是我所能得到的最接近的(这不起作用)。

#!/bin/sh
find . -mindepth 3 -maxdepth 3 -type d -name '*' -execdir \
find "{}" -type f -newer "{}"/MarkSheet* \;
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 5

for ms in Class/*/*/MarkSheet*; do
  find "${ms%/*}" -type f -newer "$ms"
done
Run Code Online (Sandbox Code Playgroud)

按照您的方法,您需要一个 shell 来扩展MarkSheet*全局。所以:

find . -mindepth 3 -maxdepth 3 -type d -exec sh -c '
  for dir do
    find "$dir" -type f -newer "$dir"/MarkSheet*
  done' sh {} +
Run Code Online (Sandbox Code Playgroud)