Скрипт Awk, который принимает в качестве входных данных путь к каталогу и отображает все файлы, размер которых превышает ограничение? - PullRequest
0 голосов
/ 20 марта 2019

Я довольно новичок в Linux и AWK.Я хочу отобразить все файлы, размер которых превышает (например, 3 КБ) и где эти файлы находятся в каталоге, путь которого указан пользователем.

Мне удалось сделать это путем «жесткого кодирования»путь в терминале, как это:

ls -l /home/user/Documents | ./testScript

testScript содержит:

#!/bin/bash -f
awk '
    BEGIN{
        if($5>3000){
            print $9
        }
    }
'

Как мне сделать это с пользователем, указав путь к каталогу?

Ответы [ 3 ]

2 голосов
/ 20 марта 2019

Было бы проще использовать find, чем комбинация ls и скрипта

find PATH_TO_DIRECTORY -size +10k

Вы можете сделать это функцией bash, принимающей параметр

0 голосов
/ 20 марта 2019

altagir find является лучшим решением, но в тех случаях, когда кто-то хочет использовать эту общую структуру, но не знает другого способа, кроме ls, сделать это:

 stat -c "%s %n" "$someDir"/* | awk -v max=$maxval '$1 > max { print $2 }'
0 голосов
/ 20 марта 2019

Публикация ответа, поскольку я не могу комментировать из-за отсутствия очков репутации:

Не уверен, что вы подразумеваете под "указанным пользователем путем", но предполагая, что вы можете прочитать путь в некоторой переменной, просто сделайте этов вашем коде:

ls -l $ mypath |./testScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...