Contare il numero di file

Stato
Discussione chiusa ad ulteriori risposte.

kr1pn0$

Utente Silver
14 Ottobre 2008
69
5
0
70
salve,
l'esercizio è quello di contare il numero di file,(magari catalogandoli per estensione) nella cartella ove è posto l'eseguibile o script...
ecco il mio in ruby:
Codice:
mp3=Dir['*.mp3']
txt=Dir['*.txt']
jpg=Dir['*.JPG']
avi=Dir['*.avi']
rub=Dir['*.rb']
fil=Dir['*.*']
puts "La cartella attuale ha:"
puts "#{mp3.size} file mp3"
puts "#{txt.size} file txt"
puts "#{jpg.size} file jpg"
puts "#{avi.size} file avi"
puts "#{rub.size} file ruby"
puts "#{fil.size} file totali.."
puts " "
puts "                  by kr1pn0$"
fine = gets
se si usano funzioni del sistema operativo: specificare su che piattaforma siete..
 
Kripnos ma tu hai previsto un numero ristrettissimo di estensioni...e una chiamata a Dir per ogni estensione mi sembra appesantisca un troppino lo script...
La mia versione in ruby
Codice:
st=Hash.new
Dir.foreach('.'){|f|
next if !File.file?(f)
f=~/([\w\s[:punct:]]*)(\.[\w]{1,5})/i
if !st.include?($2) : st[$2]=[$1] else st[$2].push $1 end
}
nf=0
st.each {|key, value| 
puts "\n"+key+" ["+st[key].length.to_s+" files]:"
st[key].each{|r| puts "-  "+r
nf+=1
}
}
puts nf.to_s+" files found.                 by GreyFox"
cataloga i files cosi:
EXT [#files trovati]:
- file1
- file2
 
:look::look::\:\:\
Si scusa,
[ot]
ma sai ieri sera sono uscito ( leggendo la storia dei 3 linguaggi ) allora google
alla mano mi sono scaricato guide e interprete e ho iniziato a smanettare...
comunque quando avro una conoscenza maggiore si vedra...
 
Very simple:
PHP:
<?php
$files = array ();
foreach (glob ("*.*") as $file)
	$files[] = array_pop (explode (".", $file))."|".$file;

sort ($files);

foreach ($files as $ext => $file)
	print "Extension ".array_shift (($arr=explode ("|", $file)))." - Filename: ".array_pop ($arr)."<br />";
print "<br />Totale: ".count ($files);
?>
 
VB .Net
Codice:
Dim files As String() = IO.Directory.GetFiles(Application.StartupPath & "\*.*")
MsgBox (files.Count)


se vogliamo leggerne il nome aggiungiamo un ciclo
Codice:
For i = 0 To UBound(files)
            MsgBox(files(i))
Next
Predator
 
in sh
Codice:
echo Music:; ls -lt *.mp3 | wc -l
echo Docs:; ls -lt *.txt *.doc | wc -l
echo Video:; ls -lt *.avi *.mov | wc -l

se non trova nessun file mpeg stampera' a video:
ls: cannot access *.mov: No such file or directory
 
Language: Javascript (Oserei dire che ormai, e' lulzScript :p)
Source: http://pastebin.com/f436b0b9b

Example:
Codice:
meh@lolcahost ../lulzJS/current/src/core $ ls
Core  Core.cpp  Core.h  Interactive.cpp  Interactive.h  main.cpp

meh@lolcahost ../lulzJS/current/src/core $ lol.js
.cpp 3 files found.
.h 2 files found.

5 total files found.
 
scusa meh,
ma il js non è un linguaggio client, non è rischioso che riesca a vedere i file?
 
Eh?

Guarda che il javascript non e' un linguaggio solo per browsers :S

Usa il mio interprete ed e' un linguaggio molto piu' potente di quanto molta gente crede :)
 
Predator ha detto:
a sto punto è buono pure questo
Codice:
dir

Predator
Non conta (solo) il numero di files, ne da' il numero di files per ogni estensione ;)

Pero' si, anche a me ha fatto ridere quello in sh :)
 
Predator ha detto:
VB .Net
Codice:
Dim files As String() = IO.Directory.GetFiles(Application.StartupPath & "\*.*")
MsgBox (files.Count)


se vogliamo leggerne il nome aggiungiamo un ciclo
Codice:
For i = 0 To UBound(files)
            MsgBox(files(i))
Next
Predator

Predator, ma se usi una funzione appropriata per farlo l'esercizio è totalmente inutile... è come fare
Codice:
int string_lenght( string s)  {
   return s.size();
}
se dovessi fare un esercizio che richieda di ritornare la lunghezza di una stringa....
 
jam se non sbaglio o lo scopo di un codice è ottenere un risultato nel modo ottimale. Se lo devi fare in VB.Net quello è il codice.
no perchè altrimenti diventa esercizi di programmazione in low level assembler, perchè nessuno dovrebbe mai utilizzare una funzione, ma solo opcode.

Preddy

meh. ha detto:
Non conta (solo) il numero di files, ne da' il numero di files per ogni estensione ;)

Pensa che risulatato :lol:
 
Beh, in realtà pensavo che questo genere di esercizi fossero fatti apposta per tentare di implementare a mano funzioni già esistenti... magari sbaglio eh

Ora, con a mano non intendo giù di assembler, ma con le funzioni base dei linguaggi, che non automatizzino almeno ciò che è proprio lo scopo dell'esercizio
 
Ecco il codice in python...non so se va bene però....
Codice:
import os
cartella=raw_input("\nDigita l'indirizzo della cartella da esaminare\n")
print "\nLa cartella da esaminare:\n", cartella
a=len(os.listdir(cartella))
print "\nIn questa cartella gli elementi sono :",a,"\n\nEcco la lista dei file\n"
for x in os.listdir(cartella):
    print x, "\n"
 
perl su linux (di sistema ho usato solo ls e l'interprete awk)
Codice:
@tot=split(/\n/,`ls -l|awk {'print \$8'}`);foreach(@tot){push(@files,$_)unless($_=~/\//);}foreach(@files){$ca++if($_=~/(mp3|MP3|aac|AAC|wma|WMA)$/);$cv++if($_=~/(avi|AVI|flv|FLV|wmv|WMV|mpg|MPG|mov|MOV)$/);$ci++if($_=~/(jpg|JPG|jpeg|JPEG|png|PNG|gif|GIF)$/);$ct++if($_=~/(txt|TXT)$/);$cs++if($_=~/(pl|rb|sh|fal|php|py)$/);}$ca?$ca==1?print"There is an audio file\n":print"There are $ca audio files\n":print"There are no audio files\n";$cv?$cv==1?print"There is a video file\n":print"There are $cv video files\n":print"There are no video files\n";$ci?$ci==1?print"There is an image file\n":print"There are $ci image files\n":print"There are no image files\n";$ct?$ct==1?print"There is a plain text file\n":print"There are $ct plain tet files\n":print"There are no plain text files\n";$cs?$cs==1?print"There is a script\n":print"There are $cs scripts\n":print"There are no video files\n";$#files?$#files==1?print"There is a file\n":print"There are $#files files\n":print"There are no file\n
 
Stato
Discussione chiusa ad ulteriori risposte.