Regex, das in RedHat funktioniert, führt in Ubuntu zu keinem Ergebnis

Regex, das in RedHat funktioniert, führt in Ubuntu zu keinem Ergebnis

Mein Ziel ist es, bestimmte Dateien aus bestimmten Unterverzeichnissen abzugleichen. Ich habe die folgende Ordnerstruktur

`-- Daten
    |-- ein
    |-- eine.txt
    |-- b
    |-- b.txt
    |-- c
    |-- c.txt
    |-- d
    |-- d.txt
    |-- e
    |-- e.txt
    |-- org-1
    | |-- a.org
    | |-- b.org
    | |-- org.txt
    | |-- Benutzer-0
    | | |-- eine.txt
    | | |-- b.txt

Ich versuche, die Dateien nur im Datenverzeichnis aufzulisten. Mit dem folgenden Befehl in RHEL erhalte ich das richtige Ergebnis

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

Wenn ich denselben Befehl in Ubuntu ausführe, funktioniert es nicht.

Kann mir bitte jemand sagen, warum es unter Ubuntu nicht funktioniert?

Bearbeiten:

Nach einigen Tests wurde mir klar, dass es gemäß meinem Beitrag sowohl in RHEL als auch in Ubuntu einwandfrei funktioniert. Das Problem liegt woanders. Die Dateien, die ich in meinem Ubuntu-System habe, sind Datendateien.

Es ist sehr merkwürdig, dass diese Dateitypen weder in RHEL noch in Ubuntu aufgeführt werden.

[supratik@testserver ~]$ ls testprog/data/
a.txt Daten.dat

[supratik@testserver ~]$ Datei testprog/data/a.txt
testprog/data/a.txt: ASCII-Text

[supratik@testserver ~]$ Datei testprog/data/data.dat
testprog/data/data.dat: Daten

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

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

Antwort1

Ich habe dies gerade auf CentOS 5.6,6.0 und Ubuntu 9.04,10.04 und 11.04 überprüft und ich bekomme bei allen die gleiche Antwort, nämlich

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

Ähnliche Ergebnisse erhalten Sie mit

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

verwandte Informationen