Newsgroup: it.comp.os.linux.iniziare
Titolo: Lista folder in formato testo

Ciao,
sto cercando di generare un file CSV (Comma Separated Value) che
contenga tutte le sottodirectory (no file) di una directory radice,
corredato di alcuni attributi.
Vorrei che ogni riga del file sia in formato
    Directory; GruppoUtenti; AccessLists;
(eventualmente)ListaUtentiDelGruppo
Sto lavorando su questo comando ma non riesco a farlo funzionare.
    find $DIRECTORYROOT -type d execdir "stat --printf '%N;%G;%A;%C\n'
" +
Così com'è mi restituisce l'errore
    find: paths must precede expression
Ma non capisco perché.
Cosa devo correggere?
tag: print export directory folder list to csv excel spreadsheet

 wrote:
tipo:
find DIRECTORY -type d -execdir stat --printf="%N;%A\n" {} \;
1) al posto di DIRECTORY mettici in quale dir vuoi cercare
2) pagina man di stat per il formato di printf
3) se vuoi il percorso completo della dir sostituisci -execdir con -exec
4) pagina man di find
-- 
Never try to teach a pig to sing.
It wastes your time and annoys the pig.

 3) se vuoi il percorso completo della dir sostituisci -execdir con -exec
Ottimo. Con execdir non si capiva niente della struttura.
Comunque mancava il    " {} \; " alla fine....... non ho idea di che
cosa significhino (dai man non si capisce), ma adesso funziona!

cosa significhino (dai man non si capisce), ma adesso funziona!
Me lo spiegate che differenza o controindicazione c'e'
ad usare questa molto piu' semplice?
stat -c "%n;  %G;  %A" $(find pippo -type d)
-- 
Saluti, Dalet



Ci sono due differenze principalmente:
- come lo faresti tu, se ci sono file con spazi nel nome, ottieni errori
  perche' ogni componente del nome viene interpretata come un file, per
  eempio se hai "mia directory", stat cerca di processare "mia" e
  "directory"
- se find ritorna tantissimissimi nomi, puoi avere un errore "argument list
  too long" (mentre con find -exec funziona).
-- 
Cio' che si vede, e'.

 stat -c "%n;  %G;  %A" $(find pippo -type d)
 - non è /più/ /semplice/
 - non è più efficiente
 - non è portabile
 - causa più problemi di quanti ne risolva 
 - nei file CVS il separatore non è lo spazio
 - non funziona
 
es:
$ mkdir pippo
$ touch pippo{ab,a\ b,'a
b'}
$ stat -c "%n; %G; %A" $(find pippo -type f)
ed è solo una delle divertenti cose che potrebbero capitare. 

 cosa significhino (dai man non si capisce), ma adesso funziona!
-exec command ;
    Execute  command; true if 0 status is returned.  All following arguments to find are
    taken to be arguments to the command until an argument consisting of `;' is  encoun-
    tered.   The string `{}' is replaced by the current file name being processed every-
    where it occurs in the arguments to the command, not just in arguments where  it  is
    alone,  as  in  some versions of find.  
che man hai ??
;-)


  too long" (mentre con find -exec funziona).
THX! infatti con la mia coi - maledetti siano! - spazi non
ci son riuscito in nessun modo, invece sul numero fino a 95
mila non ha battuto ciglio.
-- 
Saluti, Dalet

$ stat -c "%n; %G; %A" $(find pippo -type f)
Si' THX me l'ha detto anche Marco, tutte queste prove
le avevo gia' fatte e infatti non m'e' riuscito di fare
prendere a stat l'output di "a b" in nessun modo (con
la mia eh).
-- 
Saluti, Dalet

 b" in nessun modo (con la mia eh).
Comunque, a proposito di semplicità: se non interessano le ACL, mi pare 
sia sufficiente
find $startdirectory -type d -printf '%p;%g;%M\n'
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
http://cleanenergy.harvard.edu/
 
http://spin.fh-bielefeld.de/
 
http://www.gpugrid.net/