Newsgroup: it.comp.os.linux.iniziare
Titolo: find: ignorare file

+ find -type f
./dir/file
./file
 
Però vorrei che dir/file venga ignorato.
Ho fatto qualche prova, ma come vedete di seguito non ha funzionato
 
+ find -type f '!' -name dir/file
find: warning: ‘-name’ matches against basenames only, but the given 
pattern contains a directory separator (‘/’), thus the expression will 
evaluate to false all the time.  Did you mean ‘-wholename’?
./dir/file
./file
Cosa si può fare?

Il 27/04/22 13:26, Fx ROOM ha scritto:

find -type f | grep -v "dir/file"
cosi' non mostra "dir/file"
 
angelo
 

 Cosa si può fare?
 
Ciò che ti hanno già detto qui mille volte di fare in questi casi, alex!
Descrivere nel dettaglio con parole tue la tua necessità e cosa vorresti
ottenere in linea generale, anziché postare comandi errati che ti sei
inventato sul momento.
 
 
 


find -type f ! -path "./dir/file"

Il 27/04/22 14:14, angelo ha scritto:

custom_find="find -type f"
$custom_find
./dir/file
./dir/file2
./file
$custom_find | grep -v dir/file
./file
 
Così però ha escluso anche ./dir/file2

 find -type f ! -path "./dir/file"
 
Bingo!!!
Effetti indesiderati? (spero di no)


Va be' un po' di fantasia no?
Ma una ricerca in rete non sai farla?
 
È solo un pattern: grep funziona con delle espressioni regolari
come pattern: io gli do in pasto enne righe e lo istruisco a
vagliarle una per una controllando se ciascuna di queste contiene
una certa espressione regolare, cercare REGEXP o REGEX in rete.
 
Per intercettare SOLO il riga che contiene precisamente
 
./dir/file
 
l'espressione regolare è la seguente:
 
^\./dir/file$
 
il simbolo:
 
- tegolina ^, sta per "inizio riga"
 
- dollaro $, sta per "fine riga"
 
- il punto "." deve essere "protetto" col backslash "\", perché ha il
  significato di "qualsiasi carattere", cioè è un jolly in pratica,
  nel tuo caso invece vuoi proprio intercettare il carattere "punto"..
  va be' in questo caso cambierebbe poco ma per essere precisi.
 
 
Quindi:
 
find -type f | grep -v ^\./dir/file$
 
Per avere un'idea di cosa stai escludendo togli un attimo l'opzione
"-v" a grep, e ottieni appunto le righe (o meglio l'unica riga in
questo caso specifico) corrispondenti all'espressione regolare.


Leggere bene il messaggio di errore e
poi leggere la man page.
 
"Did you mean ‘-wholename’?"
 
Hai controllato "-wholename" sul manuale?
 
bye,
 
-- 
 
piergiorgio

 questo caso specifico) corrispondenti all'espressione regolare.
 
Grazie per le idee :)
 
Una domanda
 
Ma perchè l'output prodotto da find ha questo formato
 
./dir/file
./file
 
cioè perche ogni item inizia con ./ ?

 cioè perche ogni item inizia con ./ ?
 
Perché non ti sei letto neanche le prime righe del man find.
Cioè questo è il minimo sindacale, ora capisco agli albori di
usenet che se ti mandavano a RTFM erano anche un po' cani,
ma al giorno d'oggi oltre al manuale di sempre, che in effetti
può essere un po' criptico (non nel caso della tua domanda comunque)
hai mille esempi in rete, mille pagine che fanno esempi pratici
di come si usa, mille video che te lo spiegano a voce e coi disegni,
insomma... No.
A questa domanda ti rimando all'amichevole manuale.
Fatti la domanda, qual è la sintassi di find?
E datti una risposta soprattutto, io ti ho dato una
cesta di pesci, ma ora prendi la canna da pesca.

 Perché non ti sei letto neanche le prime righe del man find.
 
        This manual page documents the GNU version of find.  GNU find 
searches the directory tree rooted at each
        given starting-point by evaluating the given expression from 
left to right, according to  the  rules  of
        precedence  (see section OPERATORS), until the outcome is known 
(the left hand side is false for and op‐
        erations, true for or), at which point find moves on to the next 
file name.   If  no  starting-point  is
        specified, `.' is assumed.
 
Ok ma l'utilità pratica?
 
Ho letto (senza cogliere l'essenza) inoltre anche questo 
https://www.gnu.org/software/findutils/manual/html_node/find_html/Security-Considerations-for-find.html
 

Il 27/04/22 20:07, Piergiorgio Sartor ha scritto:

OK, anche se, da come si dice, -path è più portatile.

 OK, anche se, da come si dice, -path è più portatile.
 
E questo c'e` scritto nella man page,
sotto la voce "-wholename".
 
Sei recidivo... :-)
 
bye,
 
-- 
 
piergiorgio

Il 28/04/22 18:25, Piergiorgio Sartor ha scritto:

Non me ne ero accorto, perchè l'avevo appreso da qui 
https://stackoverflow.com/questions/43902259/linux-find-command-wholename-vs-path
 

 
https://stackoverflow.com/questions/43902259/linux-find-command-wholename-vs-path
 
 
Fa niente, buona per la prossima volta...
 
bye,
 
-- 
 
piergiorgio