Newsgroup: it.comp.os.linux.iniziare
Titolo: Ricerca di un file all'interno del file system

Ho fatto qualche prova e ricerca su internet ma non trovo il comando che
mi consenta:
 
ricerca di tutti i file senza estensione, contenuti su tutti i dischi
rigiddi del computer, che abbiano al loro interno la stringa "pippo"
 
ricerca di tutti i file senza estensione ed estensione "htm*", contenuti
su tutti i dischi rigiddi del computer, che abbiano al loro interno la
stringa "pluto"
 
ricerca di tutti i file senza estensione ed estensione, contenuti sul
solo file sytem escludendo tutti gli altri dischi rigiddi del computer,
che abbiano al loro interno la stringa "pippo"
 
ricerca di tutti i file senza estensione ed estensione, contenuti sul
solo file sytem escludendo tutti gli altri dischi rigiddi del computer,
che abbiano al loro interno la stringa "pippo" + "pluto"
 
Infine se il risultato lo voglio salvare su un file e' sufficiente
aggiungere in coda "> risultato.txt"?
Ho fatto prove con grep ma il risultato e' che la ricerca rimane attiva
per molto tempo senza occorrenze.... :(
Grazie anticipatamente.
 

 per molto tempo senza occorrenze.... :(
 
grep non cerca nei nomi dei file, ma al loro interno.


 
 
 
(
   <comandi>
) | cat > file
 
 
Rigorosamente non testati,qualche errore od incomprensione potrebbe 
esistere.
 
 

> rigiddi del computer, che abbiano al loro interno la stringa "pippo"
 
locate pippo | grep -v '\.' >> log.txt
 >> aggiunge al file
Puoi specificare le ricorrenze massime, e c'è un max di ricorrenze
Siccome usa un database prima di usarlo:
sudo updatedb
è velocissimo nella ricerca rispetto agli strumenti come find che però è 
più flessibile.


Vero,non avevo pensato a locate.
 

 Vero,non avevo pensato a locate.
 
Prima di locate potrebbe essere utile aggiornare il database
 
# updatedb
 
l'aggiornamento potrebbe durare qualche minuto ...
-- 
Ciao
Andrea Malfatti

Addi' 19 gen 2016, Andrea Malfatti scrive:

Aggiungo una cosa importante per locate: se si cercano file che solo
root puo' vedere (esempio anche di un utente diverso da chi lo da), si
deve fare per forza uno di questi modi:
1) dare il comando locate come root (oppure con prima sudo)
2) dare prima come root (o con sudo) "updatedb -l 0"
 
N.B. Per averlo sempre che mostra TUTTI i file a chiunque, bisogna
aggiungere l'opzione "-l 0" nell'eseguibile di /etc/cron.daily/mlocate.
 
 
-- 
Tanti saluti
 


 
Ovvio,ma mi è venuta in mente una cosa
locate non conosce il tipo o se il file sta in un file system differente
Conosce solo il nome del file.
In pratica locate è utile per cercare per nome come primo filtro,poi 
occorre altro per il tipo od il mount.
 

 #find / -type f | grep -v '\.' | xargs grep pippo
 
  Questo esclude tutti i file che hanno un punto ovunque nel loro nome,
incluso, ad esempio, risultati.enalotto.gennaio.2015.
Il concetto di estensione è propria del mondo Windows, dov'è utilizzato
per far capire al SO che tipo di dati contiene un file, mentre Linux
ignora il nome del file.  Ma in genere per "estensione" si intendono gli
ultimi caratteri del nome dopo l'ultimo punto fino ad un massimo di tre
(secondo qualcuno quattro).  In questo caso si dovrebbe avere:
 
grep -vE '\..{0,4}$'
 
invece di:
 
grep -v '\.'
 
  Non ho controllato gli altri comandi postati.
 
 
  Ciao,
 
 
-- 
Alessandro Selli 
http://alessandro.route-add.net
 
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.


 
 
Il concetto è che se esiste un punto esiste una estensione
Che sia un concetto propriamente di win siamo d'accordo,ma comunque è 
usato anche nei sistemi unix pur essendo solo una convenzione.
Nel tuo esempio 2015 è una estensione.
 

 Nel tuo esempio 2015 è una estensione. 
 
  No, non lo è.  È una parte del nome di un file.



E come fai a distinguere una estensione da una parte di nome file ?
 
 
 

 E come fai a distinguere una estensione da una parte di nome file ?
 
Non puoi, e` questo quello che ti sta scrivendo.
 
Su FAT, il nome del file e` composto da *due* campi,
il nome, 8 caratteri, e l'estensione, 3 caratteri.
 
Su Unix, praticamente in tutti i filesystem, il nome
del file e` una stringa, magari di 255 caratteri al
massimo, ma senza distinzione di campi.
 
Quindi l'estensione non esiste tecnicamente, si usa
semplicemente la stessa _convenzione_, ma senza un
supporto sottostante.
 
Per cui su Unix puoi avere "readme.txt", ma anche
"readme_txt", e tutti considerano culturalmente il
primo avente un estensione ed il secondo boh.
 
Altro esempio e "pic.jpg" o "pic.jpeg", oppure
"pic.tif" e "pic.tiff".
L'estensione e` tutto il testo dopo l'ultimo punto,
oppure solo se sono 3 caratteri?
 
Ed ovviamente tutti i casi in cui il punto e` usato
liberamente come separatore di campi.
Tipo "film.matrimonio.mio.cugino.mpeg".
 
Controlla anche cosa dice "basename", perche` quello
e` in grado di processare il "suffisso" di un file name.
E cosa dice "file" riguardo estensione e magic number.
Mi pare di ricordare che usi sia l'estensione, ma in
modo particolare il "magic number", per identificare
che tipo di file sia il target.
 
bye,
 
 
-- 
 
piergiorgio

 Nel tuo esempio 2015 è una estensione.
 
".2015" indica un tipo di file? :-O
 
Se non è usata in quel modo, non direi che sia una "estensione", o 
almeno non nel senso in cui "estensione" viene detto abitualmente per 
identificare un tipo di file e di conseguenza il modo in cui può essere 
utilizzato.
Nel mondo dos/windows le due cose normalmente coincidono, ma nel mondo 
unix non mi pare che sia sempre così. Basti pensare alla convenzione di 
usare un punto all'inizio del nome file o dir per nascondere, per es. 
configurazioni o cache. Diresti che in .bashrc la parte "bashrc" è 
l'"estensione"?
 
 


Tutto il discorso era fatto solo per fare capire che il concetto di 
estensione è appunto solo una convenzione nei sistemi unix.
Nel mio esempio ho adottato la convenzione che se esiste un punto esiste 
una estensione.
Nulla vieta comunque di essere piu raffinati nella ricerca se serve.
Ad esempio considerare una estensione formata da un . seguito da un max 
di 3 lettere.
 


Cosa è la lezione sui files dei sistemi unix ?
Stai scrivendo ovvietà
Per concludere la stessa frase che ho scritto per edevils:


 di 3 lettere.
 
Esattamente, quindi prima si deve decidere cosa
cercare, dato il formato scelto per il nome del
file e poi si puo` fare tutto il matchting che
si vuole.
 
Parlare di "estensione" non ha senso.
 
bye,
 
-- 
 
piergiorgio

 Parlare di "estensione" non ha senso.
 
Si' pero' purtroppo il veleno un po' filtra:
 
- Mc la usa per colorare la sintassi, anche se e' vero che si puo' anche
procedere diversamente, come ad esempio per le mail o i post dei NG.
Ma ho il sospetto che la guardi anche per tutti i file zippati.
Ah.. mcview (interno a mc) la usa anche per visualizzare i file html, se
non ce la metti ti mostra il sorgente come quando dai mcedit (in questo
caso pero' lo perdono perche' se trova htm e' come se non ci fosse!).
 
- Ffmpeg addirittura ne e' condizionato, a meno di dare istruzioni
esplicite contrarie.
 
- Nella GUI non lo so e non me ne importa quasi nulla, pero' mi sa tanto
che Vlc la usa eccome -- maledetti!
 
 
-- 
Tanti saluti
 


Normale,l'estensione è un concetto.
Nei vecchi DOS,che poi win ha ereditato, l'estensione faceva parte del 
fs, ma credo (dico cosi in quanto non ne sono sicuro al 100%) che anche 
al kernel win (ntfs e altro) delle estensioni non sappia neanche cosa siano.
Forse solo alcuni driver tipo fat per la compatibilità con il passato 
devono tenere conto di questa cosa.
 

 devono tenere conto di questa cosa.
 
Non so se nei file system vfat o ntfs esiste ancora qualche limitazione 
(uso Windows solo per alcuni giochi) ma mi sembra che il punto non venga 
più trattato allo stesso modo del vecchio dos anche se rimane il 
concetto che un file eseguibile deve avere estensione '.exe', '.com' 
oppure '.bat' e l'estensione (o suffisso come usa in unix) viene 
aggiunta dalla shell.
 
Del resto molti (se non tutti) programmi usano il suffisso per aprire il 
file (molto più dell'uso delle stringhe 'magiche').
 
l'estensione e` quindi molto di più di un concetto astratto come sembri 
ritenerlo tu.
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >


Se e` per questo, anche ImageMagick "convert"
(per dirne uno) usa l'estensione del nome file:
 
convert pic.jpg pig.gif
 
Usa ".gif" per capire che conversione si voglia.
 
D'altro canto *non* usa ".jpg" per capire che
input sia.
Si affida al magic number.
 
Questo per dire che si tratta semplicemente di
comodita` fornite per semplificare l'operazione.
 
In altre parole si tratta di una disposizione
diversa dei parametri della linea di comando,
che vengono integrati nel nome del file.
 
Ed i parametri linea di comando sono auto definiti,
pur potendo seguire _alcune_ convenzioni.
Vedi "find" per es.
 
Ad ogni modo, non e` che abbia scritto che le
estensioni siano il male, solo che, per dirla
altrimenti, non bisogna fidarsi, perche` non
c'e` una definizione obbligatoria.
 
bye,
 
 
-- 
 
piergiorgio

 devono tenere conto di questa cosa.
 
in realtà molti file si aprono tranquillamente (da win ovviamente..)
  anche senza il '.qualcosa', semplicemente si apre la finestra per la 
scelta del programma da usare. Purtroppo (e ciò dimostra quanto male 
vengano 'tagliate' le droghe in MS..) questo non vale per gli '.exe', e 
si possono aprire solo da CLI (che in pratica per buona sostanza è il 
vecchio DOS.
 
-- 
Fri(END), Boyfri(END), Girlfri(END), Bestfri(END). Everything has an END 
except...Fam(ILY)! It Has 3 Letters that say I LOVE YOU


Ti faccio notare solo una cosa
Io ho scritto che l'estensione è un concetto
Non ho mai scritto che l'estensione è un concetto astratto.
 

 Non ho mai scritto che l'estensione è un concetto astratto.
 
Che differenza c'è?
 
  concètto s. m. [dal lat. conceptus -us, der. di concipĕre 
«concepire»]. – 1. Pensiero, in quanto concepito dalla mente; più in 
partic., anche dal punto di vista filosofico, la nozione che la mente si 
è formata dell’intima essenza di una data realtà (materiale o astratta), 
afferrando insieme i varî aspetti e i caratteri essenziali e costanti di 
questa realtà: il c. di Dio, di o dell’essere, di universo; il c. di 
materia, di forma, di sostanza, di accidente; i c. di genere e specie; 
il c. di...


 Giovanni
 
 
A livello kernel,che e' quello a cui mi riferivo,l'estensione non esiste
La si può fare esistere solo come concetto.
Altri strati di sw se vogliono possono fare diventare quel concetto pura 
realtà
 

 di 3 lettere.
 
Semmai max 10 afaik (ma non è una condizione sufficiente).
 
.epub .jpeg .tiff .mpgeg .html
.mrimg .mrbak .class
.CRDOWNLOAD


era solo un esempio
Oramai neanche win mette simili limitazioni.
 


 
Il mio post era riferito a livello kernel
Ti risultano delle api nt* (le api del kernel iniziano tutte per nt) che 
abbiamo a che fare con le estensione dei files ?
 

 abbiamo a che fare con le estensione dei files ?
 
ehm, no.. non programmo il SO lo subisco e basta :-)
