¿Qué es comodín para seleccionar todos los directorios en un directorio?


13

Quiero establecer un bit fijo para todos los directorios en un directorio excepto los archivos. ¿Hay algún comodín para hacer esto?

#sudo chmod g+s /var/www/<WILD_CARD_FOR_ALL_DIRECTORIES>

Respuestas:


24

Use */para hacer coincidir solo directorios.

chmod g+s /var/www/*/

Para hacer coincidir todos los directorios y subdirectorios, use **/*/(siempre que haya globstarhabilitado en bash):

shopt -s globstar
chmod g+s /var/www/**/*/

2
Funciona bien, pero se romperá tan pronto como la longitud de la línea de comando expandida exceda el límite de longitud de la línea de comando. -> cyberciti.biz/faq/argument-list-too-long-error-solution
Bonsi Scott

1
Sí, soy muy consciente de eso. Sin embargo, el OP solicitó un "comodín".
dogbane

¡Si! pedí comodín, gracias.
Necktwi

Sé que pidió una solución comodín. Solo he señalado que fallaría bajo alguna circunstancia. Aparte de eso, no hay críticas para ver aquí (ya he comentado aún votado, porque es una solución de trabajo para la mayoría de los casos) ^^
Bonsi Scott

13

puedes usar find, ver el ejemplo a continuación

find /var/www/ -type d -exec chmod g+s {} \;

3
Esto es bueno, aunque no es un comodín, pero tiene la ventaja de no fallar debido a muchos directorios
Bonsi Scott

Tenga en cuenta que esto es recursivo por defecto. Si solo desea que su comando se aplique al nivel superior, puede usar el -maxdepth findargumento.
Kris Harper

0

Esto no es un comodín, por lo que me disculpo por un no-respuesta, sin embargo ...
ls -al |grep ^d | awk '{print$NF}', aparecerá una lista de todos los directorios en el directorio actual, le toca a usted decidir si desea procesar .y ..o despojarlos.

echo $(ls -al |grep ^d | awk '{print$NF}') hace que se comporte como un comodín


Esto se romperá si sus archivos tienen espacios en blanco iniciales o finales, o nuevas líneas.
Chris Down
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.