GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo obtener solo nombres del comando de búsqueda sin ruta

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

Ejemplo y explicaciones:

Cree algunos archivos de prueba:

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

Bien, se encuentran los archivos, incluida la ruta.

Para cada resultado, ejecute basename y elimine la parte .po del nombre

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

Puedes usar -execdir parámetro que imprimiría el archivo sin ruta, por ejemplo:

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

Archivos sin extensiones:

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

Consulte:¿Por qué el comando GNU find -execdir se comporta de manera diferente a BSD find?


Basado en un comando que encontré aquí:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html

Podrías hacer esto usando sed (que se ejecutó más rápido para mí, que el basename enfoque):

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

Linux
  1. ¿Cómo obtener solo archivos creados después de una fecha con Ls?

  2. Linux:¿cómo averiguar la familia de arquitectura Intel desde la línea de comandos?

  3. ¿Cómo obtener la ruta al archivo actual (pwd) en Linux desde C?

  4. ¿Cómo averiguar la versión de Bluez desde la línea de comandos?

  5. ¿Cómo obtengo mi dirección IP desde la línea de comandos?

Cómo averiguar la dirección IP pública desde la línea de comandos en Linux

Cómo encontrar el número de núcleos de CPU desde la línea de comandos en Linux

Cómo buscar archivos desde la línea de comandos de Linux

Cómo obtener el nombre de archivo de la ruta completa en Linux

¿Cómo obtener la URL del archivo de Dropbox desde la línea de comando?

¿Cómo recuerdo un comando específico del historial de comandos, sin ejecutarlo?