Wpis z mikrobloga

Mirki potrzebuję pomocy, bo sam sobie nie radzę, z bashem, a na stackoverflow nie mogę znaleźć podobnych rzeczy.

Robiąc backupy filmów/zdjęć czasami mam tak, że potrzebuję obrócić zdjęcie albo filmik i zmienia się data modyfikacji pliku. I potrzebuję zmienić datę modyfikacji na datę utworzenia pliku. Albo wszystkich plików w wybranym przeze mnie folderze.

Potrzebuję to na Maca, wiec linuxowy kod powinien zadziałać.

Wiem tyle, że że komendą stat mogę otrzymać datę utworzenia pliku, więc mam takie coś:
stat -f%B plik.jpg
i zwraca to datę utworzenia pliku w formacie timestamp, czyli np. 1435586276

i wiem, że to ustawia datę pliku:
touch -t 201904191556.12 image.jpg

I teraz potrzebuję touch -t zamienić na format timestamp albo zmienić stat, żeby mi zwracał datę utworzenia pliku w formacie YYYYMMDDHHMMSS

No i na końcu wszystko zautomatyzować, czyli żeby to leciało po każdym pliku w wybranym folderze.

Może ktoś mi z tym pomóc?

#bash #linux
  • 9
1435586276


@KonfesjonalToTakieDziwneSlowo:

echo 1435586276 | date +"%Y%m%d%H%M%S"

20190706085331

No i na końcu wszystko zautomatyzować, czyli żeby to leciało po każdym pliku w wybranym folderze.


Prostą pętlę robisz np

IFS=$'\n' Istotne jak masz spację w nazwach plików

for FILE in katalog/* ; do

echo "jakieś polecenia dla pliku $FILE"

done


Ale podejść jest w sumie kilka. Możesz zrobić kilku linijkowy skrypcik, który zmienia czas modyfikacji dla podanego mu w argumencie pliku. A
@jxlhc: @Kryspin013: @vikop_ru: @shymon80: zrobiłem, u mnie, na macu działa:

dla osób mniej ogarniętych, pliki mam przykładowo w folderze

/Users/typowymirek/Downloads/command-line-test/
i lecę po każdym z nich czymś takim:

for f in $(ls /Users/typowymirek/Downloads/command-line-test/);do touch -t $(date -r $(stat -f%B $f) +%Y%m%d%H%M) $f;done

działa pięknie, o to właśnie mi chodziło, dzięki wszystkim za pomoc ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°