Este es el comportamiento predeterminado de ls
ls /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86/pool/v/vi/virtualenv-1.4.4_linux-x86_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86_64/pool/v/vi/virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/macosx/pool/v/vi/virtualenv-1.4.4_macosx_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/win32-x86/pool/v/vi/virtualenv-1.4.4_win32-x86_2.6_1.pypm
¿Cómo hago para ls
imprimir solo el nombre base? Me gusta:
ls $OPTIONS /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
virtualenv-1.4.4_linux-x86_2.6_1.pypm
virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
virtualenv-1.4.4_macosx_2.6_1.pypm
virtualenv-1.4.4_win32-x86_2.6_1.pypm
Nota : Prefiero que el shell globbing use find
como / net / nas / data / languages / pypm / sites / rex / free contiene una gran cantidad de archivos y directorios.
linux
command-line
unix
ls
Srid dice reinstalar a Mónica
fuente
fuente
-maxdepth 1
afind
.Respuestas:
Si bien
xargs -0
está destinado a ser utilizado para la entrada delimitada por \ 0 (likefind -print0
),ls
no tiene esa opción para delimitar su salida de esta manera.Sin embargo,
haría el truco para convertir nuevas líneas en nulos en el camino. Esto permite que xargs trabaje con nombres que tengan espacios.
EDITAR: agregado
-n 1
a xargsfuente
basename: extra operand
\ 033 [0m / net / nas / data / languages / pypm / sites / rex / free / 2.6 / macosx / pool / v / vi / virtualenv-1.4.4_macosx_2.6_1.pypm \ 033 [ 0m ''-n 1
que sugirió en otro lugar como una opciónxargs
? (respuesta editada)-d
opción (delimitador), puede hacerlols ... | xargs -d '\n' -n 1 basename
.Yo uso esto:
Da una lista como:
fuente
ls -1
(y el color está deshabilitado), como lols
implica cuando no se escribe en un terminal. Parece que te estás perdiendo el punto un poco, ya que el problema es quitar el nombre del directorio cuando se especificanls
argumentos de ruta usando comodines. Intentals -d "$PWD/"* | tr '\n' '\n'
ver cuál es el problema real.ls -1
, sino que tampoco funciona cuando se han usado globos, como señaló Daniel Beck.ls -1
y solo funciona en el directorio actual, no con una ruta comols path/*
.fuente
awk
solución:fuente
ls [ruta opcional] | xargs -0 nombre base
fuente
xargs -0
está buscando.Tanto el nombre base de GNU y el nombre base de FreeBSD aceptan un
-a
argumento que le permite pasar varias rutas de acceso al comando. Esto funciona muy bien con el pegado de conchas.fuente
Dijiste que prefieres pelear
find
, pero ¿sabías que los dos no son mutuamente excluyentes? Globbing ocurre en cualquier comando que ejecute, no solols
. Por ejemplo:Tenga en cuenta que el ejemplo de búsqueda puede utilizar -print0, que es útil si sus rutas contienen espacios en blanco (las
tr
soluciones basadas en otras mencionadas funcionan muy bien en espacios normales, pero no en archivos que contienen líneas nuevas).Por último, si tiene acceso a GNU find, también puede usar -printf que evita la llamada de nombre base por completo:
fuente
-printf
opción no está disponible en la versión de MacOSX defind
.vaya al directorio donde tiene todos sus archivos y escriba.
fuente
find
.find . -name '*pypm'
si lo hace ... simplemente colocando el globo al lado para encontrar no logra nada, entonces podría escribirls *.pypm
.)