2012-05-01 13 views
5

Esto es lo que tengo hasta ahoraEstoy tratando de encontrar archivos con múltiples extensiones en una secuencia de comandos shell

DIR="/home/username/Pictures/Wallpapers" 

while [ 1 -eq 1 ] 
do 
    PIC=$(ls $DIR/*.jpg | shuf -n1) 
    PIC1="file://"$PIC 

    gsettings set org.gnome.desktop.background picture-uri $PIC1 
    sleep 30; 
done 

funciona La secuencia de comandos, pero no puedo encontrar la manera de ampliar esa información para encontrar las extensiones de archivo , como png o gif además de jpg.

Respuesta

12

¿Qué le parece usar find?

find $DIR -name \*.jpg -o -name \*.png -o -name \*.gif -print 
+0

Me ganaste. Tenga en cuenta que esto también encontrará elementos en subdirectorios, a menos que se use algo como -maxdepth. –

+0

Intenté usar ese código así: PIC = $ (find $ DIR -name \ *. Jpg -o -name \ *. Png -o -name \ *. Gif -print | shuf -n1) Y luego Me hago eco de $ PIC, pero solo se muestran líneas en blanco. – bbbgscott

+0

¿Escribiste la barra invertida delante de '*'? – Oliver

3

fiesta Suponiendo, el cambio más simple sería

PIC=$(ls $DIR/*.{jpg,png,gif} | shuf -n1) 

He aquí una muestra en mi máquina

$ export DIR=Desktop 
$ PIC=$(ls $DIR/*.{jpg,png,gif} | shuf -n1) 
$ echo $PIC 

Desktop/polar.png 

recomiendo el uso de encontrar para que, en lugar.

+0

cuando intento ese código, obtengo ls: no puedo acceder /home/username/Pictures/Wallpapers/*.{jpg,png}: Ningún archivo o directorio ¿Estoy haciendo algo mal? – bbbgscott

+0

'Asumiendo bash' – sehe

+0

Es bash. Incluí el shebang en la parte superior del archivo. – bbbgscott

Cuestiones relacionadas