2012-04-22 56 views
4

我有一堆保存爲png文件的圖形。他們中的大多數不是很有用,但有些非常有用。查看並選擇要從列表中刪除的文件

我想寫一個腳本,每次都會顯示它們並等待我點擊y或n。如果我打了n,刪除它。如果沒有,轉到下一個。

我遇到了兩個問題。

首先,feh打開一個新窗口,所以我必須將alt-tab換回到我的shell中才能按y或n。是否有可能讓bash監聽包括不同窗口中的按鍵在內的任何按鍵?

其次,我試圖用read來聽一個角色,但它說-n不是一個有效的選項。儘管如此,該線路在終端中工作正常。

任何想法如何做到這一點? 欣賞幫助。

#! /bin/sh                                        

FILES=./*.png 
echo $FILES 
for FILE in $FILES 
do 
    echo $FILE 
    feh "$FILE" & 
    CHOICE="none" 
    read -p "d to delete, any other key to keep: " CHOICE -n 1 -s 
    killall feh 
    if [$CHOICE -eq "d"] 
    then 
     rm $FILE 
    fi 
done 
+1

我不希望從編程項目中獲得樂趣,但如果您只是想完成這項任務_done_,'qiv'圖像查看器提供了一個非常方便的'd'鍵綁定,可將圖像移動到'.qiv-trash /'目錄。運行'qiv -fmt *'並快速擺脫無用的圖像。 – sarnold 2012-04-22 23:39:26

+1

剛發現feh有同樣的事情,但它是ctrl刪除。所以我想這個問題已經解決了,儘管我仍然對這個答案感興趣 – Russ 2012-04-22 23:45:33

回答

2

這可能只切到你的問題,但你的腳本設置爲使用執行/bin/sh(POSIX Shell的),但你可能正在使用/bin/bash爲您互動終端外殼。 read的處理方式取決於您使用的是哪個外殼:

下面是您的一個read命令的輸出三個不同的外殼;該dash外殼用於/bin/sh我的系統上,但要確保它處理同時稱爲shdash,我已經兩次運行,每名一次:

$ bash 
$ read -p "d to delete, any other key to keep: " CHOICE -n 1 -s 
d to delete, any other key to keep: d 
bash: read: `-n': not a valid identifier 
$ exit 
$ dash 
$ read -p "d to delete, any other key to keep: " CHOICE -n 1 -s 
d to delete, any other key to keep: d 
read: 1: -n: bad variable name 
$ 
$ pdksh 
$ read -p "d to delete, any other key to keep: " CHOICE -n 1 -s 
pdksh: read: -p: no coprocess 
$ $ sh 
$ read -p "d to delete, any other key to keep: " CHOICE -n 1 -s 
d to delete, any other key to keep: d 
read: 1: -n: bad variable name 
$ 
$