Folder parsowania dla par z bash lub AppleScript

2

Edytuję zdjęcia RAW w Photoshopie przy użyciu Adobe Camera Raw. Sposób, w jaki edycje działają, za każdym razem, gdy pracuję nad obrazem, Photoshop tworzy plik tekstowy o tej samej nazwie co obraz, dla którego dokonano edycji. Jednak czasami, gdy usuwam obraz lub używam go w Photomerge, plik XML pozostaje w tyle. Mam teraz folder z ~ 1100 obrazami RAW (.NEF), ~ 1300 plikami tekstowymi (.xmp) i kilkoma plikami photoshop (.psd, .psb).

Chciałbym przeanalizować ten folder za pomocą AppleScript lub polecenia bash, albo oznaczyć lub usunąć pliki .xmp, które nie mają towarzyszącego pliku RAW. Logicznie kod powinien wyglądać następująco: dla każdego pliku .xmp sprawdź plik .NEF o tej samej nazwie. Jeśli .NEF nie istnieje, usuń lub zaznacz plik .xmp. Jeśli .NEF istnieje, nie rób nic.

Nie znam AppleScript i chociaż znam ffmpeg, diskutil oraz podstawowe komendy cd / ls i rsync w terminalu, nigdy nie próbowałem czegoś takiego i nie wiem od czego zacząć.

Miałem więc nadzieję, że ktoś tutaj może:

  1. Pomóż zdecydować, czy bash lub AppleScript jest bardziej odpowiedni tutaj ORAZ
  2. Pomóż mi napisać sekwencję LUB wskaż mi kilka dobrych zasobów, w których mógłbym nauczyć się wystarczająco dużo (bash lub AppleScript), aby sam napisać sekwencję.
NoahL
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
nohillside

Odpowiedzi:

5

W Terminalu zmień katalog, np. cd /path/to/filesNa lokalizację plików docelowych, a następnie użyj następującego polecenia, aby usunąć dowolny .xmpplik, który nie ma odpowiedniego .NEFpliku:

for f in *.xmp; do [[ ! -f ${f%.*}.NEF ]] && rm "$f"; done
użytkownik3439894
źródło
To działa idealnie! To o wiele łatwiejsze, niż się spodziewałem!
NoahL
1
Czy nie "${f%.*}.xmp"byłoby tak samo "$f"?
fd0
1
@ fd0, W tym przypadku tak jest tak samo i oczywiście działa w obie strony. Opublikowałem to przed wypiciem kawy i byłem leniwy, kopiując i wklejając zmieniając ${f%.*}.NEFna "${f%.*}.xmp". Skróciłem to teraz.
user3439894 17.04.17
@ user3439894 Dodatkowe punkty za dobre wykorzystanie leniwego wykonania.
Tony Williams