如何在MAC OS上的两个不同文件夹中列出具有相同名称但不同修改日期的文件?

时间:2017-04-27 05:04:02

标签: macos file terminal command-prompt

这些文件夹也包含其他文件夹,我希望它是递归的。

1 个答案:

答案 0 :(得分:0)

我今天没有时间为你做这一切,但这是技术的基础:

find DIRECTORY1 -exec bash -c 'b=$(basename "$1"); m=$(stat -f "%m" "$1"); echo $m:$b:$1' _ {} \; >/tmp/a

find DIRECTORY2 -exec bash -c 'b=$(basename "$1"); m=$(stat -f "%m" "$1"); echo $m:$b:$1' _ {} \; >/tmp/b

这将为您提供两个文件 - /tmp/a/tmp/b,看起来像这样,每个文件的修改时间,基本名称和全名由冒号分隔:

1492590869:a.gif:/users/mark/tmp/a.gif
1492591676:a.pdf:/users/mark/tmp/a.pdf
1493118064:a.png:/users/mark/tmp/a.png
1492857356:b.png:/users/mark/tmp/b.png

现在解析awk告诉它分隔符是冒号的那些:

awk -F: '
      FNR==NR {time[NR]=$1;base[NR]=$2;full[NR]=$3; next}
              {t=$1;b=$2;n=$3; if(n in time && t!=time[something] ... 

   ' /tmp/a /tmp/b

在第一次传递中,FNR==NR选取第一个文件的字段,然后在第二个传递中进行检查和打印。

有点冲刺,但希望它有所帮助。没有人说答案必须完整。