Это дает вам все файлы, которые отличаются между atime и ctime:
find . -type f -printf "%p\n%a\n%c\n\n" | \
awk 'BEGIN {FS="\n"; RS=""}; $2!=$3 {print $1}'
Смотрите этот пример:
ls -1
data
data1
ss.08-02-2012-01.22.16-PM.png
ss.09-02-2012-13.42.06-PM.png
test.awk
test.py
test.sh
Теперь посмотрите на статистику файла:
find . -type f -printf "%p\n%a\n%c\n\n"
./test.sh
Tue Aug 21 15:12:29.0000000000 2012
Tue Aug 21 15:12:29.0000000000 2012
./data1
Tue Aug 21 15:13:13.0000000000 2012
Tue Aug 21 15:12:29.0000000000 2012
./test.awk
Tue Aug 21 15:12:29.0000000000 2012
Tue Aug 21 15:12:29.0000000000 2012
./data
Tue Aug 21 15:12:29.0000000000 2012
Tue Aug 21 15:12:29.0000000000 2012
./test.py
Tue Aug 21 15:12:29.0000000000 2012
Tue Aug 21 15:12:29.0000000000 2012
./ss.09-02-2012-13.42.06-PM.png
Tue Aug 21 15:12:29.0000000000 2012
Tue Aug 21 15:12:29.0000000000 2012
./ss.08-02-2012-01.22.16-PM.png
Tue Aug 21 15:12:29.0000000000 2012
Tue Aug 21 15:12:29.0000000000 2012
Я разделяю каждое поле новой строкой и каждую запись пустой строкой, чтобы облегчить последующую обработку с помощью awk: awk 'BEGIN {FS="\n"; RS=""}; $2!=$3 {print $1}'
Здесь разделитель полей и разделитель записей устанавливаются в начале (RS интерпретирует пустую строку как пустую строку). Это означает, что $ 2 и $ 3 содержат atime и ctime. Если они различаются, печатается имя файла (в $ 1).
Результат здесь:
./data1