GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere solo nomi dal comando find senza percorso

Usa find trunk/messages/ -name "*.po" -exec basename {} .po \;

Esempio e spiegazioni:

Crea alcuni file di prova:

$ touch test1.po  
$ touch test2.po  
$ find . -name "*.po" -print
./test1.po  
./test2.po

Ok, i file vengono trovati, incluso il percorso.

Per ogni risultato esegui basename , ed elimina la parte .po del nome

$ find . -name "*.po" -exec basename \{} .po \;  
test1  
test2

Puoi usare -execdir parametro che stamperebbe il file senza percorso, ad esempio:

find . -name "*.po" -execdir echo {} ';'

File senza estensioni:

find . -name "*.txt" -execdir basename {} .po ';'

Vedi:Perché il comando GNU find -execdir si comporta diversamente da BSD find?


Sulla base di un comando che ho trovato qui:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html

Puoi farlo usando sed (che è stato eseguito più velocemente per me rispetto al basename approccio):

find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'

Linux
  1. Come integrare il comando Mv dopo il comando Trova?

  2. Trova l'unica destinazione del collegamento simbolico?

  3. Comando Linux:come "trovare" solo file di testo?

  4. Come ottenere solo il nome del file con Linux "trova"?

  5. Come ottenere il percorso del file corrente (pwd) in Linux da C?

Come scoprire l'indirizzo IP pubblico dalla riga di comando su Linux

Come trovare il numero di core della CPU dalla riga di comando in Linux

Come cercare file dalla riga di comando di Linux

Come ottenere il nome del file dal percorso completo in Linux

Come ottenere l'URL del file Dropbox dalla riga di comando?

Come posso richiamare un comando specifico dalla cronologia dei comandi, senza eseguirlo