Mam pliki o nazwach „12. 2017-04-11 063118.jpg” i „123. 2016-09-05 115236.jpg”. Liczba po lewej stronie „.” liczy się jak indeks od 1 do 1400.
Jak mogę ustawić datę i godzinę utworzenia zgodnie z tym, jak określono w nazwie pliku dla wszystkich 1400 plików, które mam w folderze. Wiem, że polecenie touch -t zmienia datę utworzenia, ale nie wiem, jak wyodrębnić informacje o dacie / godzinie z nazwy pliku i umieścić je w poleceniu, aby było to wykonywane automatycznie dla wszystkich plików.
Wiem z innego wątku, że poniższe powinny działać. ale nie wiem, jak dostosować konwersję tekstu, aby poprawnie zastosować się do mojej konwencji nazewnictwa plików.
for f in *; do
t=$(echo $f | sed -E 's/([A-z]*-)|([ ,;])|(\..*)//g' | sed -E 's/(.*)(..)/\1.\2/')
touch -t $t "$f"
done
Powyższy kod działa, jeśli moja konwencja nazewnictwa plików przypomina „clip-2014-01-31 18; 50; 15.mp4”, jednak mam inny format: „12. 2017-04-11 063118.jpg” i „123. 2016-09-05 115236.jpg”. Czy ktoś wie, jak dostosować sed
polecenie funkcji, aby przetworzyć konwersję do odpowiedniego formatu dla dotyku?
bare *
(Glob) pokaże każdy obiekt systemu plików w katalogu. Czy uważasz, że używanie*.jpg
byłoby lepszym wyborem?