Intereting Posts
Восстановить мою историю прошлых команд? Как обрабатывать подкоманду в сценарии оболочки? Настольные файлы исчезли таинственно. Отсутствует весь каталог Потеря Wi-Fi соединения с точкой доступа через несколько минут (hostapd, dnsmasq, iptables) не удалось установить GRUB в / dev / sda, Linux Mint 14.1 Nadia отключить поддержку мыши в `vim` в среде« gnome-terminal » Являются ли два файла жестко привязанными? Файлы Rsync, исключая список Соединение samba-сервера работает на одном выигрыше 7, а не на другом Как использовать tail -f с grep для отображения окружающих линий Как защитить каталог с помощью пароля в LINUX (Нужно добавить или изменить файлы после шифрования)? Разделяет SID процессами * всегда * подразумевает их общий PGID? Разрешение Chown запрещено на долю samba Разрешение гостевой ОС (слишком маленький текст) в рабочей станции vmware 12 Как узнать, подключен ли сетевой интерфейс, туннель, мост или физический интерфейс?

Поиск файла с тем же временем модификации, что и у другого

Для каждой фотографии моя камера создает файл IMG_NNNN.JPG и файл IMG_NNNN.CR2, которые имеют одинаковое время модификации (которое, исходя из SD-карты в формате FAT, всегда составляет четное количество секунд).

Я держу JPG и CR2 отдельно, но мне иногда нужно найти CR2, который соответствует данному JPG. Мои текущие сценарии используют что-то вроде:

find /path/to/CR2s -name $(basename $jpgfile .JPG).CR2 

Но, к сожалению, из-за переноса нумерации использование одного имени уже недостаточно. Использование имени и времени модификации было бы идеально, но что-то вроде:

 find /path/to/CR2s -name $(basename $jpgfile .JPG).CR2 -newermt "$(stat -c '%y' $jpgfile)" 

не работает, потому что newermt кажется, выполняет строгое сравнение неравенства (то же самое с newer ). Кроме того, newer... опции не являются действительно пуленепробиваемыми, так как поиск CR2 старого JPG может найти CR2 более нового омонима.

Так:

  • Я пропускаю опцию в find (GNU findutils 4.7.0-git)?
  • Или есть элегантный способ сделать это (принимая во внимание, что файлы с одинаковыми именами, как правило, разделяются годами)?

С zsh вы можете сделать

 autoload age file=/path/to/something.JPG ls -ld -- **/$file:t:e.CR2 (De'(age :$file :$file)') 

Чтобы найти файлы нечто.CR2 точно такого же возраста, что и $file .