Digamos que cuando hago el comando ls la salida es:
file1 file2 file3 file4
¿Es posible mostrar solo una determinada columna de salida, en este caso file2? He intentado lo siguiente sin éxito:
echo ls | $2
Básicamente, todo lo que quiero hacer es repetir solo la segunda columna, en este caso, quiero repetir:
file2
ls
salida?ls
y después de crear algunos archivos / carpetas, puede que ya no sea lo que desea. Como terdon señaló, seguramente hay mejores maneras de obtener lo que quieresRespuestas:
El siguiente comando formateará la salida ls en una columna
fuente
ls -1 /directory | head -2 | tail -1
ols -1 /directory | perl -ne 'print if $. == 2'
ls | sed -n '1p;q'
parece más simpleEstás buscando esto:
Sin embargo, suponiendo que intente usar este nombre de archivo más tarde, no lo haga, ya que se romperá en los nombres de archivo que contienen espacios en blanco. En su lugar, coloque los archivos en una matriz y obtenga el segundo, lo que evita tener que analizar en absoluto:
El orden en que recupera los archivos depende del valor de
LC_COLLATE
. Como tal, es posible que desee establecerLC_COLLATE=C
primero, si desea una clasificación "estándar" en todos los casos de esquina.fuente
1
en shells sensibles (zsh, yash, fish, csh, tcsh, rc, es ...) y0
en ksh y bash. Para una solución portátil a todos los shells tipo Bourne, puede usar: en suset -- *; printf '%s\n' "$2"
lugar.Debería agregar
-C
comols
utiliza el modo de columna única cuando la salida no es un terminal.awk
luego imprime la segunda columna:fuente
Creo que estas buscando
No mostrará permiso, propietario, grupo, fecha, tamaño ... sino un nombre de archivo simple en una sola columna.
fuente
La única forma que funciona para mí es agregar "-todos". Es decir:
Porque
-all
agrega más columnas como usuario, permisos, etc.fuente
Como ya se ha mencionado, el uso de columnas para analizar la
ls
salida no es muy robusto porquels
rompe las líneas de acuerdo con la longitud del nombre del archivo y el ancho del terminal. Sin embargo, a menudo es interesante mostrar una sola columna de una lista de elementos. Puede hacer esto usando el comando de corte:mostrará
Tenga en cuenta que le
-d
permite seleccionar el delimitador de columna, por ejemplo, conpuede mostrar la segunda columna de una lista separada por comas.
fuente
Supongamos que si desea mostrar solo el nombre de archivo particular en la ruta actual, use el siguiente comando
mando:
fuente
Esto es complicado, porque el análisis
ls -C
depende de:ls -C
)ls -C
salida es columnar, pero puede estar configurada en un número variable de espacios como separadores de campo.ls
opciones de visualización particulares elegidas).Por ahora, comencemos con el problema más fácil ( es decir, no el n. ° 4 anterior), suponiendo que no hay espacios en blanco en los nombres de archivo . Para imprimir la columna # 2, esto funciona:
Desenrollar eso:
COLUMNS=$COLUMNS
garantiza que la longitud de la columna alimentada sea|
consistente con la pantalla actual del terminal. Cambiar esto a un valor arbitrario también funciona, por lo queCOLUMNS=50
oCOLUMNS=70
provocaríals -C
reorganizar las cosas de acuerdo con esos anchos.Otro método sería usar el
-w
interruptor, por ejemplo :tr
hace que los separadores de campo sean consistentes: una sola pestaña entre cada columna.cut
da salida a la columna deseada.fuente
cambie la cantidad de caracteres (54) según sea necesario para que solo obtenga los datos que desea.
fuente
54-
tell corta a cada personaje comenzando en la posición 54; no se detiene en la columna "reconocida por el ser humano"