2012-05-01 33 views
5

Dưới đây là những gì tôi có cho đến nayTôi đang cố gắng để tìm tập tin với nhiều phần mở rộng trong một kịch bản 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 

Các kịch bản làm việc, nhưng tôi không thể tìm ra cách để mở rộng nó để tìm phần mở rộng tập tin khác , như png hoặc gif ngoài jpg.

Trả lời

12

Cách sử dụng tìm?

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

Bạn đã đánh bại tôi. Lưu ý rằng điều này cũng sẽ tìm thấy những thứ trong thư mục con, trừ khi một cái gì đó như -maxdepth được sử dụng. –

+0

Tôi đã cố gắng sử dụng mã đó như sau: PIC = $ (tìm $ DIR -name \ *. Jpg -o -name \ *. Png -o -name \ *. Gif -print | shuf -n1) Và sau đó Tôi echo $ PIC, nhưng chỉ có dòng trống được hiển thị. – bbbgscott

+0

Bạn có viết dấu gạch chéo ngược trước dấu '*' không? – Oliver

3

Giả sử bash, đơn giản nhất thay đổi sẽ

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

Đây là một mẫu trên máy tính của tôi

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

Desktop/polar.png 

tôi khuyên bạn nên sử dụng tìm cho rằng, để thay thế.

+0

khi tôi thử mã đó, tôi nhận được ls: không thể truy cập /home/username/Pictures/Wallpapers/*.{jpg,png}: Không có tệp hoặc thư mục nào như vậy Tôi có làm gì sai không? – bbbgscott

+0

'Giả sử bash' – sehe

+0

Nó là bash. Tôi đã bao gồm shebang ở đầu tệp. – bbbgscott

Các vấn đề liên quan