2012-06-15 19 views
26

Voglio cercare una serie di file in base al nome del file.file di ricerca linux basato sul modello nome file

Ecco il mio elenco:

enter image description here

Per esempio ho avuto il file sul sopra.

Voglio solo cercare il file che è senza _bak.

+1

Quale linguaggio di programmazione stai utilizzando? Quali API? – sarnold

+0

La tua domanda è troppo vaga per dare una buona risposta. Stai cercando di cercare il contenuto dei file? I nomi dei file stessi? Stai solo cercando di ottenere nomi di file che non finiscono in '_bak'? –

+0

Inoltre, dovresti pubblicare i contenuti della tua directory in testo normale, non un'immagine. Vedi la [guida alla formattazione] (http://stackoverflow.com/editing-help#code). –

risposta

36

Se hai intenzione di limitare la ricerca nella directory corrente, uso:

find . -maxdepth 1 -mindepth 1 ! -name '*_bak' 

Se si desidera trovare in modo ricorsivo in tutte le directory, rimuovere -maxdepth 1.


Modifica in risposta al commento di OP

Per ottenere i file che iniziano con ei e non terminano con _bak uso:

find . -type f -name 'ei*' -a ! -name '*_bak' 
+1

Ciao Tim Pote, la tua risposta va bene se non -maxdepth 1 -mindepth 1. Grazie per il tuo aiuto. – crchin

+0

@ user1154655 Modificato secondo il tuo suggerimento. –

+0

Grazie per la risposta veloce! – crchin

-1

Utilizzare l'opzione Grep Invert Match.

Ad esempio, se si desidera che tutti i file senza la parola _bak, utilizzare:

grep -v *_bak /path/to/file 
+0

Ciao Erwald, la tua risposta non funziona ma grazie anche per il tuo aiuto. – crchin

6

Si prega di provare questo:

find . -type f ! -iname "*_bak" 

Quanto sopra il comando troverà tutti i file che non terminano con _bak.

+0

Il comando è utile. Grazie . se la directory contiene anche altri file, ma voglio solo cercare il nome del file inizia con ei ma senza bak? – crchin

+1

@ user1154655 Vedi la mia risposta. –

+1

Questo farà 'find. -name 'ei *' -type f! -iname "* _bak" ' – Azi

Problemi correlati