RedHat で動作する正規表現が Ubuntu では結果を返さない

RedHat で動作する正規表現が Ubuntu では結果を返さない

私の目標は、特定のサブディレクトリから特定のファイルを一致させることです。次のフォルダ構造があります

`-- データ
    |-- ア
    |-- a.txt
    |-- バ
    |-- b.txt
    |-- う
    |-- c.txt
    |-- ダ
    |-- d.txt
    |-- え
    |-- e.txt
    |-- org-1
    | |-- a.org
    | |-- b.org
    | |-- org.txt
    | |-- ユーザー-0
    | | |-- a.txt
    | | |-- b.txt

データディレクトリ内のファイルのみをリスト化しようとしています。RHELで次のコマンドを使用して正しい結果を得ることができます。

./testdir/ -iwholename "*/data/[!/].txt" を検索します。
.txt ファイル
b.txt
テキスト
d.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/データ/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'

関連情報