Czy da się nazwać automatycznie dużą liczbę plików tak, aby nazwa pliku była taka sama jak data utworzenia?
O co mi chodzi i dokładniej wyjaśnię: odkąd mam telefon Huawei, nie mam problemu ze zdjęciami i filmami, bo są one nazywane właśnie od daty i godziny. To bardzo ułatwia sprawę w wielu kwestiach. Niestety wcześniej Sony numerowało mi zdjęcia od 0000 i później, gdy już zrobiłem ich 9999, to znów od 0000. Generuje to czasami konflikty, chociaż nawet jeśli nie chodzi tak bardzo o konflikty (można nazwać to np. z (2) itd.), to po prostu wygodniej jest, kiedy jest data.
Pytam tylko orientacyjnie.
Tak, jednolinkowy skrypt w PowerShellu na przykład, zmieniałem tak nazwy plików z kamerki z DSCN_0000 na 20201020-1231 na przykład.
Jak wyżej - da się. Tylko warto mieć na uwadze, że data utworzenia może być taka jak data skopiowania na dysk. Np. na karcie plik leżał rok i został skopiowany na dysk. Wtedy może (ale nie musi) mieć datę z jaką został skopiowany, a nie tę sprzed roku. To zależy od tego jaki system plików jest na obu dyskach. Najczęściej daty kopiują się jak trzeba.
Przykładowy skrypt do zmiany nazw plików tekstowych:
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
sub getLastModificationDate {
my $filePath = shift;
my $lastModifyTime= (stat $filePath)[10];
return strftime "%Y-%m-%d", localtime($lastModifyTime);
}
my $directoryPath = "files";
opendir (my $dirHandle, $directoryPath) || die "Can't opendir $directoryPath: $!";
for my $fileName (readdir $dirHandle) {
if ($fileName =~ m/\.txt$/i) {
my $lastModifyTime = getLastModificationDate "$directoryPath/$fileName";
rename "$directoryPath/$fileName", "$directoryPath/$lastModifyTime" . "_$fileName";
print "$directoryPath/$lastModifyTime"."_$fileName\n";
}
}
closedir $dirHandle;
Rozszerzenia i nazwę katalogu można sparametryzować i używać :)
"Przykładowy skrypt do zmiany nazw plików tekstowych:"
To mi akurat chodzi tylko i wyłącznie o zdjęcia, czyli pliki graficzne (ew. filmy).
Pewnie to zbyt trudne dla mnie, aby napisać działający skrypt, ale miło, że się da. ;-)
Total Commander, "Narzędzie wielokrotnej zamiany".