Come combinare ls e grep per elencare solo i file e usare ls per contare le dirs

2

Ho qualche problema con la combinazione di ls e grep. Il fatto è che devo usare solo ls e grep per elencare tutti i file nella home directory. Ho provato più combinazioni, ma senza alcun effetto. Penso che dovrei usarlo come:

ls /home/mydir | grep stomething

La prossima domanda è (non sai come fare) come usare ls e un altro comando per contare il numero di dir nella cartella principale?

    
posta masterllama 27.01.2015 - 05:10

1 risposta

5

L'uso di ls e grep è corretto, che troverà risultati nell'output ls che contiene 'stomething'. Nota che guarda l'intera riga, non solo il nome del file (applicabile soprattutto quando si usano determinati flag con ls, come ls -l ecc.)

Trovando le directory, è meglio usare find e wc (wordcount):

find /home/mydir -maxdepth 1 -mindepth 1 -type d | wc -l

Spiegazione:

  • maxdepth 1, conta fino ad una profondità massima nell'albero di 1 (ad es. solo dirs, non sottodir in questo caso)
  • mindepth 1, fondamentalmente utilizzato in quell'esempio per assicurarsi che find non trovi "." anche.
  • digita d, cerca le directory (-type f troverà i file, io troverò i soft link ecc.)
  • wc -l, conta le righe restituite

Se lo fai senza la pipe to wc otterrai un elenco di tutti i risultati. Trova è un comando piuttosto pratico con cui avere familiarità.

    
risposta data drinxy 27.01.2015 - 05:20

Leggi altre domande sui tag