Перечислите числовые файлы, которые выше определенного числа - PullRequest
0 голосов
/ 30 октября 2018

У меня есть список файлов в каталоге, заканчивающийся цифрой. Как показано ниже:

play_football_3
play_football_4
play_football_5
play_football_15
play_football_59

Я могу извлечь последнюю цифровую цифру из вышеуказанных файлов. а

echo "play_football_5" | cut -f3 -d"_"

Теперь я пытаюсь перечислить все файлы, которые имеют более высокую версию, чем play_football_5.

Ожидаемый результат:

play_football_15
play_football_59

Ответы [ 5 ]

0 голосов
/ 30 октября 2018

Использование Perl однострочного

> ll
total 0
-rw-r--r-- 1 xxxxxx devlgrp 0 Oct 30 14:41 play_football_5
-rw-r--r-- 1 xxxxxx devlgrp 0 Oct 30 14:41 play_football_4
-rw-r--r-- 1 xxxxxx devlgrp 0 Oct 30 14:41 play_football_3
-rw-r--r-- 1 xxxxxx devlgrp 0 Oct 30 14:41 play_football_15
-rw-r--r-- 1 xxxxxx devlgrp 0 Oct 30 14:41 play_football_59
> perl -ne ' BEGIN { @files=glob("play*");foreach(@files){ ($file=$_)=~s/.*_(\d+)/\1/g; print "$_\n" if $file > 5 } exit }'
play_football_15
play_football_59
>
0 голосов
/ 30 октября 2018

Вы также можете сохранить свою оригинальную идею, выполнив что-то вроде этого:

for file in $(ls | cut -d_ -f3)
do
  if [[ "$file" -gt 5 ]]
  then
    echo "play_football_$file"
  fi
done

Если вы сделаете это, находясь в каталоге с вашими файлами, вы получите:

play_football_15
play_football_59
0 голосов
/ 30 октября 2018

Вы можете использовать awk для этого:

printf "%s\n" play_football_* | awk -F_ '$3>5'

printf выведет список всех файлов в текущем каталоге, начиная с play_football_, а awk отфильтрует файлы с номером больше 5

0 голосов
/ 30 октября 2018

Если у вас bash 2.02-alpha1 или новее, вы можете включить «расширенное глобализация » и искать файлы, начинающиеся с play_football_ и не заканчивающиеся цифрами 0-5, например так:

shopt -s extglob

ls play_football_!([0-5])

Здесь является ссылкой, чтобы начать больше узнать о ней.

0 голосов
/ 30 октября 2018

Вы можете использовать

awk -F'_' '$3 > 5'

См. онлайн awk демо

При -F'_' вы устанавливаете разделитель на подчеркивание, а при '$3 > 5' печатаются только те строки (записи), где третье поле больше 5.

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