2012-05-01 13 views
5

Oto co mam tak dalekoPróbuję znaleźć pliki z wieloma rozszerzeniami w skrypcie powłoki

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 

Skrypt działa, ale nie mogę dowiedzieć się, jak go rozwinąć, aby znaleźć inne rozszerzenia plików , podobnie jak png lub gif oprócz jpg.

Odpowiedz

12

Co powiesz na używanie find?

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

Uderzyłeś mnie do tego. Zauważ, że znajdzie to również w podkatalogach, chyba że użyto czegoś takiego jak -maxdepth. –

+0

Próbowałem użyć tego kodu: PIC = $ (znajdź $ DIR -name \ *. Jpg -o -name \ *. Png -o -name \ *. Gif -print | shuf -n1) A następnie Powtarzam $ PIC, ale wyświetlają się tylko puste linie. – bbbgscott

+0

Czy zapisałeś odwrotny ukośnik przed "*"? – Oliver

3

Zakładając bash, najprostszy zmiana byłoby

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

Oto przykład na moim komputerze

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

Desktop/polar.png 

Polecam używanie znaleźć na tym, że zamiast.

+0

kiedy próbuję tego kodu, otrzymuję ls: nie mogę uzyskać dostępu /home/username/Pictures/Wallpapers/*.{jpg,png}: Brak takiego pliku lub katalogu Czy robię coś nie tak? – bbbgscott

+0

'Zakładając bash' – sehe

+0

To jest bash. Uwzględniłem shebang na górze pliku. – bbbgscott

Powiązane problemy