Maszynka do obliczenia ilości plików z konkretnym rozszerzeniem

0

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 ?

1

@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:

https://docs.python.org/3/library/os.html

4

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";
}

2

ale przeciez to co po kropce to niekoniecznie musi byc faktyczny typ pliku

5

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.

1

W windows:

dir "*.xls*"  /a:-d /s /b | find ":" /c
0

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ę?

2

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.

0

Ś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ć?

1

@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.

1

WinDirStat (apka) i będziesz wiedział nawet konkretnie ile miejsca zajmują :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1