Это относится к другому вопросу: Как мне использовать robocopy для рекурсивного вывода списка всех файлов определенного размера?
Я хотел бы проанализировать вывод команды (или записать файл журнала) и найти строковое значение, преобразовать его в целое число, а затем посмотреть, больше ли это целочисленное значение заданного целого числа.
Например, учитывая строку:
*EXTRA File 78223 C:\_Google.Enterprise.Contract.2010-06-01.pdf
Я хотел бы сравнить 78223 с 10485760. Возможно ли это с помощью grep или sed?
Спасибо!
Использовать awk
следующим образом:
$ echo '*EXTRA File 78223 C:\foo.pdf' | awk '$3 > 1048576 {print $0;}'
$ echo '*EXTRA File 78223 C:\foo.pdf' | awk '$3 > 40000 {print $0;}'
*EXTRA File 78223 C:\foo.pdf
Также - если вы используете Unix-подобную пользовательскую среду (например, UnxUtils или Cygwin, если вы работаете в Windows), вы можете использовать find
с -size
, чтобы получить список файлов напрямую, а затем передать по каналу xargs и делать все, что вы пытаетесь сделать с выбранными файлами.
Общий ответ на ваш вопрос (интересные сравнения и другие операции) действительно awk или bash (с bc) или perl, но конкретный сценарий поддается find
.
В чистом Bash:
while read -r _ _ size _; do ((size > 10485760)) && echo "hit"; done < foo.log
Perl можно использовать аналогично awk:
echo '*EXTRA File 78223 C:\foo.pdf' | perl -ane 'print if $F[2] > 40000'