varios usan usa una representar que punto por para ordenar opciones nombre mover los listar letra empiecen doble comando carácter caracteres argumentos archivos bash shell wildcard

bash - usan - mover varios archivos en linux



¿Puedo usar caracteres comodín de shell para seleccionar nombres de archivos que van desde números de dos dígitos(por ejemplo, de foo_1.jpg a foo_54.jpg)? (4)

Tengo un directorio con archivos de imagen foo_0.jpg a foo_99.jpg . Me gustaría copiar los archivos foo_0.jpg través de foo_54.jpg .

¿Es esto posible simplemente usando bash comodines?

Estoy pensando en algo como cp foo_[0-54].jpg pero sé que esto selecciona 0-5 y 4 (¿verdad?)

Además, si no es posible (o eficiente) con solo comodines, ¿cuál sería una mejor manera de hacerlo?

Gracias.


Me gusta la respuesta de , pero si realmente desea utilizar el globo, lo siguiente también podría funcionar para usted:

$ shopt -s extglob $ cp foo_+([0-9]).jpg $targetDir

En el globo extendido, +() coincide con una o más instancias de cualquier expresión entre paréntesis.

Ahora, esto copiará TODOS los archivos llamados foo_ seguidos de cualquier número, seguido de .jpg . Esto incluirá foo_55.jpg , foo_139.jpg y foo_1223218213123981237987.jpg .

Pensándolo bien, Glenn Jackman tiene la mejor respuesta. Pero, sí me dio la oportunidad de hablar sobre la propagación de globos .


Supongo que desea copiar estos archivos a otro directorio:

cp -t target_directory foo_{0..54}.jpg


ls foo_ [0-9] .jpg foo_ [1-4] [0-9] .jpg foo_5 [0-4] .jpg

Pruébalo con ls y si te parece bien, haz la copia.


for i in `seq 0 54`; do cp foo_$i.jpg <target>; done