Respuestas:
Use llaves para ello:
ls /opt/somedir/{aa,bb,cc}
Para obtener más información, lea sobre la expansión de llaves .
En bash, ejecute shopt -s extglob
(o póngalo en su ~/.bashrc
), y puede usar patrones adicionales que proporcionan expresiones regulares con una sintaxis inusual (heredada de ksh). También puede usar estos patrones en ksh, por supuesto, y también en zsh después setopt ksh_glob
.
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
En zsh, puede usar directamente (foo|bar)
como patrón.
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Tenga en cuenta que el comando se llama con la ruta completa. Si desea llamar al comando con una ruta corta, deberá cambiar el directorio de alguna manera, y (cd /opt/somedir && somecommand aa bb cc)
es, con mucho, la forma más fácil.
Puedes filtrar usando egrep
:
ls | egrep '(aa|bb|cc)'
Para buscar todos los archivos de texto:
ls | egrep '(aa|bb|cc).txt'
Primero, te dirijo a: nunca analices ls , nunca . La forma correcta y canónica de hacer lo que quieres es con find .
Por ejemplo:
find /opt/somedir -regex '.*[aa|bb|cc].*' -exec mv '{}' ~/backup \;
Usualmente uso en -name
lugar de -regex
porque es más simple. Pero una expresión regular se adapta a su caso de uso. Debe ejecutar el comando sin -exec
la primera vez, para asegurarse de que realmente sean los archivos que desea mover / eliminar.