Как отсортировать полную папку файлов и вернуть имена файлов, которые в сумме дают x

#linux #shell #unix

#linux #оболочка #unix

Вопрос:

Как следует из названия, мне был предоставлен каталог, полный 1000 текстовых файлов, содержащих только 5 чисел 1000 или меньше. Затем мне нужно найти, список файлов с номерами, равными 2000

Сейчас почти все мои знания в области программирования — это C , Java, Javascript, так что я совсем новичок во всем этом. Это первый урок и список упражнений, все предыдущие являются базовыми, одна строка в командной строке, поэтому я чувствую, что сделал это неправильно, и мне было интересно, есть ли лучший, более простой способ.

 #!/bin/bash

for i in {1..1000}
do

if (($i < 10));
    then
    perl -nle '$sum  = $_ } END { $int = $sum' 0000$i
elif (($i < 100));
    then
    perl -nle '$sum  = $_ } END { $int = $sum' 000$i
elif (($i < 1000));
    then
    perl -nle '$sum  = $_ } END { $int = $sum' 00$i
else
    perl -nle '$sum  = $_ } END { $int = $sum' 0$i

fi

if [[ $int -eq 2718 ]]
    then
    if (($i < 10));
        then
        echo 0000$i
    elif (($i < 100));
        then
        echo 000$i
    elif (($i < 1000));
        then
        echo 00$i
    else 
        echo 0$i
    fi
fi
done
  

P.S Это не задание, это практика

Комментарии:

1. ваше i значение max равно 10 , поэтому эти i<100 проверки и ‘i<1000’ всегда будут верными

2. Зачем запускать целую кучу процессов на Perl — вы могли бы сделать все это на Perl или awk.

3. Предполагается ли, что вы используете только bash? Если нет, сделайте то же самое с perl или awk . Дайте нам знать.

4. Предыдущий вопрос заключался в том, чтобы найти, какие файлы содержат число 999. Очевидно, что это действительно просто, просто используя grep. Мне интересно, есть ли простой способ, подобный этому. Вышесказанное — единственное, о чем я мог подумать.