Список файлов, которые больше, чем значение X и меньше, чем Y - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть некоторые файлы на Unix-сервере, имя которого похоже на abc_ 250 -00.txt.Теперь я хочу перечислить файлы, которые больше, чем значение X, но меньше, чем Y.

, например: - ниже приведен список файлов

abc_**100**-00.txt
xyz_**101**-000.txt
abc_**200**-00.txt
xyz_**201**-000.txt
abc_**250**-00.txt
xyz_**290**-000.txt
abc_**300**-00.txt
xyz_**350**-000.txt

Мне нужен результат спискафайлов, которые больше, чем XXX_ 201 -xx.txt, но меньше, чем XXX_ 300 -xx.txt.

abc_ 250 -00.txt

xyz_ 290 -000.txt

Я пробовал с помощью ls и совмещал с awk, но не получил должного результата.

Буду признателен за любую оказанную помощь.Спасибо!

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Никаких подоболочек не требуется.

echo "abc_100-00.txt
xyz_101-000.txt
abc_200-00.txt
xyz_201-000.txt
abc_250-00.txt
xyz_290-000.txt
abc_300-00.txt
xyz_350-000.txt" |
while read -f f
do n=${f#???_}
   n=${n%-*} 
   if (( n < 300 )) && (( n > 201 )) 
   then echo $f
   fi
done

Тем не менее, awk скорее всего будет быстрее.:)

0 голосов
/ 20 декабря 2018

Дано:

$ ls -1
abc_**100**-00.txt
abc_**200**-00.txt
abc_**250**-00.txt
abc_**300**-00.txt
xyz_**101**-000.txt
xyz_**201**-000.txt
xyz_**290**-000.txt
xyz_**350**-000.txt

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

$ ls -1 | perl -lnE 'say if (m/(?<=\*)(\d{3})(?=\*)/ && 201<$1 && $1<300)'
abc_**250**-00.txt
xyz_**290**-000.txt
0 голосов
/ 20 декабря 2018

awk на помощь!

$ ls *.txt | awk -F[-_] '201<$2 && $2<300'

abc_250-00.txt
xyz_290-000.txt

если есть другие файлы, которые вы не хотите участвовать в поиске, вы можете ограничить ls с помощью ls *_[0-9][0-9][0-9]-00*.txt

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