Potrzebuję uporządkować swoje zdjęcia / filmy / pliki na swoim dysku.
Czy jest jakieś narzędzie, dzięki któremu w wygodny sposób miałbym pokazane, że po prostu mam tyle i tyle plików Excel (czyli te xls i xlsl i jakieś tam inne), tyle i tyle Word, tyle i tyle zdjęć .jpg ?
@matiz17: Takie coś będziesz w stanie napisać sam w jeden dzień - w zależności od wymaganej funkcjonalności - nawet szybciej.
Skanujesz rekursywnie wszystkie katalogi od roota - na linuxie - lub dysku "C" - czy jak tam masz go nazwanego na windowsie - i zliczasz wystąpienia danych rozszerzeń.
Chyba, że nie umiesz w programowanie, ale patrząc po ilości postów chyba umiesz.
Pythonowa paczka do tej zabawy, nic więcej nie potrzebujesz:
Proszę, w Perlu to parę linijek. Tzn. parę byłoby gdyby inni rozumieli. Oczywiście można sporo zmienić i sparametryzować, ale gotowca nie mam pod ręką a nie chce mi się pisać.
use strict;
use warnings;
our %extensions;
sub countFilesByExtension {
my ($directoryPath, $extension) = @_;
my @directories;
opendir (my $mainDirectory, $directoryPath) or (warn "Cannot open dir $directoryPath!\n" && return);
foreach my $fileName (readdir $mainDirectory) {
if ($fileName eq "." || $fileName eq "..") {
next;
}
my $filePath = "$directoryPath/$fileName";
if (-f "$filePath" && $fileName =~ /\.$extension$/i) {
$extensions{$extension}++;
} elsif (-d "$filePath") {
push @directories, "$filePath";
}
}
closedir $mainDirectory;
while (1) {
my $path = shift (@directories);
unless (defined $path) {
last;
}
opendir (my $dir, $path) or (warn "Cannot open dir $path!\n" && return);
foreach my $fileName (readdir $dir) {
my $filePath = "$path/$fileName";
if ($fileName eq "." || $fileName eq "..") {
next;
}
if (-f "$filePath" && $fileName =~ /\.$extension$/i) {
$extensions{$extension}++;
} elsif (-d "$filePath") {
push @directories, "$filePath";
}
}
closedir $dir;
}
}
my $directoryPath = "C:\\jakis folder";
countFilesByExtension($directoryPath, "png");
countFilesByExtension($directoryPath, "gif");
countFilesByExtension($directoryPath, "jpg");
foreach my $extension (keys %extensions) {
print "$extension: $extensions{$extension}\n";
}
ale przeciez to co po kropce to niekoniecznie musi byc faktyczny typ pliku
W PowerShellu to jedna linijka: (gci -Recurse -Filter "*.jpg").Length
- policzy ile jest plików o rozszerzeniu .jpg w danym folderze i podfolderach. Ale jeżeli OP chce żeby samo liczyło, dzieląc automatycznie per typ pliku, to pewnie więcej kombinowania.
W windows:
dir "*.xls*" /a:-d /s /b | find ":" /c
Z wszystkich odpowiedzi najbardziej podpasowało mi coś od @Panczo. Reszta to nie mój poziom i nie za bardzo z tego skorzystam, ale dziękuję.
Działa świetnie! Rozumiem, że po "/" mogę dobrać własną, dowolną ścieżkę?
Nie wiem po którym /... Puszczasz w folderze który chcesz sprawdzić, jak puścisz z poziomu c: to policzy wszystkie pliki na dysku c, jak puścisz w c:\folder to policzy w tym folderze itd.
Świetna jest opcja z **wierszem polecenia. **
Czy jest coś takiego jak wiersz polecenia np. dla dysku D / E? To znaczy na pewno jest - tylko jak to uaktywnić?
@matiz17: Przejdź do roota katalogu i z tej lokalizacji wywołaj tę komendę.
Chcesz przeskanować cały dysk D, to wpiszujesz "cd D:" i wywołujesz skanowanie.
WinDirStat (apka) i będziesz wiedział nawet konkretnie ile miejsca zajmują :)