Относительно приравнивания атрибутов файла в команде «ls»

У меня есть папка, в которой есть тысячи изображений. Из этих тысяч изображений я хочу объединить все те образы, атрибуты «Последний созданный» и «Последний измененный» точно такие же. (Другими словами, я хочу отделить все изображения, которые я никогда не переименовал, например)

Есть ли способ сделать это с терминала?

это две команды, которые я хочу объединить в файл списков ls -tU по дате создания. (Я нахожусь на mac) ls -lt перечисляет файл по дате изменения

так что я хочу «Список файлов, дата создания которых была создана = дата изменена»,

Вы можете сделать это, используя команду stat . Вот простой скрипт, который печатает имена файлов с некоторыми скидками на встроенные пробелы:

 #!/bin/sh find $* -exec stat -f '%m %B %N' {} \; | \ awk '$1 == $2 { \ s=length($1)+length($2)+3; $0 = substr($0,s); print $0; }' 

%m и %B являются соответственно измененными и время рождения (которые, как представляется, были заданы). Сценарий печатает их как десятичные числа, переходя к awk который затем печатает только строки, в которых эти числа одинаковы. Поскольку ваши имена файлов могут иметь встроенные пробелы, остальная часть сценария удаляет значения временной метки со входа и печатает оставшуюся часть строки.

Дальнейшее чтение:

  • Как использовать команду stat в OS X для отображения даты / времени создания файла или каталога?
  • stat / readlink – отображение состояния файла

Мне было скучно, и у меня есть возможность использовать такой скрипт, поэтому я изменил Томаса Дики совсем не так, а не так, как например, так, чтобы вы могли обращаться со всеми именами файлов (даже с новыми символами) и легко менять разделитель между именами файлов (например, просто установите ORS на "\0" чтобы переслать его на xargs -z … )

 #!/bin/sh find "${1-.}" -type f -exec stat --printf '%n\0%Y %W\0' -- {} \; | \ awk 'BEGIN { RS = "\0"; FS = " "; ORS = "\n"; } { if (NR % 2) { f = $0; } else if ($1 == $2) { print f; } }' 

Не полностью POSIX из-за, например, --printf .