Regex, работающий в RedHat, не дает никакого результата в Ubuntu

Regex, работающий в RedHat, не дает никакого результата в Ubuntu

Моя цель — сопоставить определенные файлы из определенных подкаталогов. У меня следующая структура папок

`-- данные
    |-- а
    |-- а.txt
    |-- б
    |-- б.txt
    |-- с
    |-- c.txt
    |-- д
    |-- d.txt
    |-- е
    |-- e.txt
    |-- орг-1
    | |-- a.org
    | |-- b.org
    | |-- org.txt
    | |-- пользователь-0
    | | |-- a.txt
    | | |-- б.txt

Я пытаюсь перечислить файлы только внутри каталога данных. Я могу получить правильный результат, используя следующую команду в RHEL

найти ./testdir/ -iwholename "*/data/[!/].txt"
а.txt
б.txt
c.txt
д.txt
е.txt

Если я запускаю ту же команду в Ubuntu, она не работает.

Может ли кто-нибудь объяснить, почему это не работает в Ubuntu?

Редактировать:

После некоторых тестов я понял, что, как я и написал, он работает правильно и в RHEL, и в Ubuntu. Проблема в другом. Файл, который у меня есть в системе Ubuntu, — это файлы данных.

Очень странно, что эти типы файлов не отображаются ни в RHEL, ни в Ubuntu.

[supratik@testserver ~]$ ls testprog/data/
a.txt данные.dat

[supratik@testserver ~]$ файл testprog/data/a.txt
testprog/data/a.txt: текст ASCII

[supratik@testserver ~]$ файл testprog/data/data.dat
testprog/data/data.dat: данные

[supratik@testserver ~]$ find ./testprog/ -iwholename "*/data/[!/].txt"
./testprog/data/a.txt

[supratik@testserver ~]$ find ./testprog/ -iwholename "*/data/[!/].dat"

решение1

Я только что проверил это на CentOS 5.6, 6.0 и Ubuntu 9.04, 10.04 и 11.04, и я получаю один и тот же ответ на всех из них, а именно:

find  ./testdir/ -iwholename "*/data/[!/].txt"
./testdir/data/c.txt
./testdir/data/d.txt
./testdir/data/a.txt
./testdir/data/e.txt
./testdir/data/b.txt

Вы можете получить похожие результаты с помощью

Find ./testdir/data/ -maxdepth 1 -name '*.txt'

Связанный контент