2012-02-14 37 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