2012-02-14 3 views
0

Привет я пытаюсь создать функцию Баш поиска видео файл в папке и если найти размер файла больше, то 32mb шоу сбщ файла превысило 32 МБ в размере помочь мне завершитьBash Script Результаты файл превысил

мой код

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

+0

как это сделать? – Hemang

+0

Если вы хотите итерации в файлах bash, вы не используете 'find', который обрабатывает их все за один проход. Вы должны использовать цикл. Будет расширяться мой ответ ... – Benoit

ответ

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" 

Если вы хотите его в Баш вы могли бы сделать:

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 {$ file} Файл результатов превысил 32 МБ в размере – Hemang

+0

Что делать вы хотите точно? Найти видео по 32М? – Benoit

+0

да, если видеофайл более 32 МБ показать этот файл видео за 32 Мб – Hemang