2012-02-14 34 views
0

你好,我試圖在文件夾中創建bash函數搜索視頻文件,如果找到的文件大小更大然後32MB顯示味精文件已經超過32MB大小 幫助我完成bash腳本結果的文件已經超過

我的代碼

RESULTS_SIZE=$(find /folder/ -maxdepth 1 -iregex ".*\.\(mov\|mpeg\|wav\|mp4\|avi\|mpg\|flv\|WMV\|AVI\|mkv\)" -exec stat -c %s "{}" \;) 
if [ "$RESULTS_SIZE" -gt 32768 ] 
then 

    echo "Results file has exceeded 32MB in size." exit 1; 

fi 
+0

RESULTS_SIZE不是整數,它與stat'的'每個輸出每個視頻的多變量。您無法將其與數字進行比較。 – Benoit 2012-02-14 09:14:42

+0

如何使這成爲可能? – Hemang 2012-02-14 09:21:42

+0

如果你想在bash中迭代文件,你不用'find'來處理它們,只需一次。你應該使用一個循環。將擴大我的答案... – Benoit 2012-02-14 09:30:29

回答

2

只需使用-size開關的find,與-前綴下面N,+尺寸大小超過N,和b,k,M,G後綴叮咬,千字節,兆字節或千兆:

find . -maxdepth 1 -iregex "the_regex" -size +32M -printf "Viseo over 32 MB (size %s): %h/%f" 

如果你想在bash,那麼你可以這樣做:

for current_file in *.mov *.mpeg *.wav *.mp4 *.avi *.mpg *.flv *.WMV *.AVI *.mkv 
do 
    if test "$(stat -c %s "$current_file")" -gt 32000000 
    then 
     echo file size over 32MB: "$current_file" 
     mv "$current_file" "~/my_big/file_folder/" 
    else 
     mv "$current_file" "~/my_small/file_folder/" 
    fi 
done 
+0

是,但如何msg {$文件}結果文件已超過32MB的大小 – Hemang 2012-02-14 09:12:22

+0

什麼你想要的是什麼?查找32M以上的視頻? – Benoit 2012-02-14 09:13:30

+0

是的,如果視頻文件超過32MB顯示味精這個視頻文件超過32MB – Hemang 2012-02-14 09:14:47