Bash, найти файлы, которые содержат цифры в имени файла - PullRequest
2 голосов
/ 28 января 2010

В bash я хотел бы использовать команду find для поиска файлов, которые содержат числа от 40 до 70 в определенной позиции, например c43_data.txt . Как можно реализовать этот фильтр в find?

Я пытался file . -name "c**_data.txt" | grep 4, но это не очень приятно.

Спасибо

Ответы [ 4 ]

6 голосов
/ 28 января 2010

Возможно что-то вроде:

find . -regextype posix-egrep -regex "./c(([4-6][0-9])|70)_data.txt"

Это соответствует 40 - 69 и 70.

Вы также можете использовать параметр iregex для сопоставления без учета регистра.

1 голос
/ 28 января 2010
$ ls
c40_data.txt  c42_data.txt  c44_data.txt  c70_data.txt  c72_data.txt  c74_data.txt
c41_data.txt  c43_data.txt  c45_data.txt  c71_data.txt  c73_data.txt  c75_data.txt

$ find . -type f \( -name "c[4-6][0-9]_*txt" -o -name "c70_*txt" -o -name "c[1-2][3-4]_*.txt" \) -print
./c43_data.txt
./c41_data.txt
./c45_data.txt
./c70_data.txt
./c40_data.txt
./c44_data.txt
./c42_data.txt
0 голосов
/ 28 января 2010

Попробуйте что-то вроде:

find . -regextype posix-egrep -regex '.\*c([3-6][0-9]|70).\*'

с соответствующими уточнениями, чтобы ограничить это файлами, которые вы хотите

0 голосов
/ 28 января 2010

ls -R | grep -e 'c[4-7][0-9]_data.txt'

find может использоваться вместо ls, очевидно.

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