найти файлы, число которых в имени файла больше, чем


Если у меня есть 10 файлов, вызываемых 01-a.txt, 02-a.txt,...10-a.txt - как я могу найти файлы, где число больше 5? Мне бы хотелось общее решение, и я бы поместил содержимое всех файлов в один файл, используя что-то вроде

cat *.txt > bigfile.txt

Я могу получить файлы с числами, используя

ls *[0-9]*

Но, кажется, не может пойти дальше этого.

Спасибо.

3 4

3 ответа:

Для этого можно использовать seq, но это работает только в том случае, если все файлы имеют одинаковое соглашение об именовании:

seq -f "%02g-a.txt" 6 10
06-a.txt
07-a.txt
08-a.txt
09-a.txt
10-a.txt

То есть:

cat `seq -f "%02g-a.txt" 6 10` > bigfile.txt

Он будет cat все файлы с именем " - " и имеющие это больше, чем $LIM.

Даже если они записаны с одной единственной цифрой (например 5), с двумя цифрами (например 05), или даже больше...

И даже если отличаются среди файлов.

LIM=5
for file in $(ls);
do
   number=$(echo $file | cut -f1 -d'-');
   [ $number -gt $LIM ] && cat $file >> bigfile.txt;
done

Предполагая, что папка содержит только эти файлы.

Это будет список всех файлов, где число > 5

Ls [0-9]* / awk-F ' - ''{if ($1 > 5) print $0} '