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