una - Listado solo directorios en UNIX
listar archivos en linux que empiecen por una letra (16)
Aquí hay otra solución que muestra directorios vinculados. Lo prefiero ligeramente porque es un subconjunto de la salida ls -l "normal":
ls -1d */ | rev | cut -c2- | rev | xargs ls -ld --color=always
Quiero listar solo los directorios en la ruta especificada ( ls
no tiene tal opción). Además, ¿se puede hacer esto con un solo comando de línea?
El seguimiento
find * -maxdepth 0 -type d
básicamente, filtra la expansión de ''*'', es decir, todas las entradas en el directorio actual, por la condición -type d
.
La ventaja es que, la salida es la misma que ls -1 *
, pero solo con los directorios y las entradas no comienzan con un punto
Esto ha estado funcionando para mí:
`ls -F | grep /`
(Pero, estoy cambiando a echo */
como lo menciona @nos)
La respuesta dependerá de tu concha .
En zsh
, por ejemplo, puedes hacer lo siguiente:
echo *(/)
Y se mostrarán todos los directorios dentro del directorio de trabajo actual.
Ver man zshexpn
para más información.
Un enfoque alternativo sería usar find(1)
, que debería funcionar en la mayoría de los sabores de Unix:
find . -maxdepth 1 -type d -print
find(1)
tiene muchos usos, por lo que definitivamente recomendaría man find
.
Para listar los directorios en el directorio de trabajo actual se puede usar ls -d */
. Y si necesita listar los directorios ocultos use este comando ls -d .*/
Prueba esto:
find . -maxdepth 1 -type d
Pruebe este ls -d */
para listar directorios dentro del directorio actual
Puede utilizar el comando de tree
con su interruptor d
para lograr esto.
% tree -d tstdir
tstdir
|-- d1
| `-- d11
| `-- d111
`-- d2
`-- d21
`-- d211
6 directories
ver man tree
para más información.
Puedes usar ls -d */
o tree -d
Otra solución sería la agrupación global, pero esto depende del shell que esté utilizando y si se admite la agrupación global de directorios.
Por ejemplo ZSH:
zsh # ls *(/)
Use esto para obtener una lista de directorios
ls -d */ | sed -e "s/////g"
Ya que hay docenas de maneras de hacerlo, aquí hay otra:
tree -d -L 1 -i --noreport
- -d: directorios
- -L: profundidad del árbol (de ahí 1, nuestro directorio de trabajo)
- -i: sin sangría, solo nombres impresos
- --noreport: no informe información al final de la lista del árbol
find specifiedpath -type d
Si no desea realizar una intervención en subdirectorios, puede hacer esto en su lugar:
find specifiedpath -type d -mindepth 1 -maxdepth 1
Tenga en cuenta que los directorios de "puntos" (cuyo nombre comience por .
) También se enumerarán; Pero no los directorios especiales .
ni ..
Si no quieres directorios de "puntos", simplemente puedes grep
:
find specifiedpath -type d -mindepth 1 -maxdepth 1 | grep -v ''^/.''
Si tengo este directorio:
ls -l
lrwxrwxrwx 1 nagios nagios 11 août 2 18:46 conf_nagios -> /etc/icinga
-rw------- 1 nagios nagios 724930 août 15 21:00 dead.letter
-rw-r--r-- 1 nagios nagios 12312 août 23 00:13 icinga.log
-rw-r--r-- 1 nagios nagios 8323 août 23 00:12 icinga.log.gz
drwxr-xr-x 2 nagios nagios 4096 août 23 16:36 tmp
Para obtener todos los directorios, use -L para resolver enlaces:
ls -lL | grep ''^d''
drwxr-xr-x 5 nagios nagios 4096 août 15 21:22 conf_nagios
drwxr-xr-x 2 nagios nagios 4096 août 23 16:41 tmp
Sin -L:
ls -l | grep ''^d''
drwxr-xr-x 2 nagios nagios 4096 août 23 16:41 tmp
Falta el directorio conf_nagios .
### If you need full path of dir and list selective dir with "name" of dir(or dir_prefix*):
find $(pwd) -maxdepth 1 -type d -name "SL*"
find . -maxdepth 1 -type d -name [^/.]/* | sed ''s:^/./::''
ls -l | grep ''^d''
Puedes hacer un alias y ponerlo en el archivo de perfil.
alias ld="ls -l| grep ''^d''"