Копировать файлы, соответствующие числовому шаблону в диапазоне - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть каталог в Ubuntu, содержащий около 1М файлов с именами, начинающимися с цифр, таких как:

1-filename-438573_45785.json.gz
2-filename-419805_47894.json.gz
4-filename-230071_00394.json.gz
5-filename-230071_00394.json.gz
...
1000000-filename-345675_909090.json.gz

Обратите внимание, что некоторые файлы (номера) отсутствуют.

Я хочу скопировать файлы с именами от 1 до 10000, поэтому я попробовал:

find . -regextype posix-egrep -regex '.*/[0-9]{4}-.+' |xargs cp -t {destination}

Однако, когда я получаю список найденных файлов, я получаю файлы с номерами от 1000 и более.

Как я могу исправить регулярное выражение, чтобы получить весь необходимый диапазон?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

С GNU найти:

find . -regextype posix-egrep -regex '.*/([0-9]{1,6}|1000000)-.+'

выход:

./5-filename-230071_00394.json.gz
./2-filename-419805_47894.json.gz
./1000000-filename-345675_909090.json.gz
./4-filename-230071_00394.json.gz
./1-filename-438573_45785.json.gz
0 голосов
/ 03 сентября 2018

Из того, что вы описываете, кажется, что единственная проблема может быть связана с регулярным выражением. Я бы попробовал это регулярное выражение вместо: '.*/([0-9]{1,4}|10000)-.+'.

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