RedHat에서 작동하는 Regex는 Ubuntu에서 어떤 결과도 제공하지 않습니다.

RedHat에서 작동하는 Regex는 Ubuntu에서 어떤 결과도 제공하지 않습니다.

내 목표는 특정 하위 디렉터리의 특정 파일을 일치시키는 것입니다. 다음과 같은 폴더 구조가 있습니다

`-- 데이터
    |--
    |-- a.txt
    |-- b
    |-- b.txt
    |-- c
    |-- c.txt
    |-- d
    |-- d.txt
    |-- 전자
    |-- e.txt
    |-- 조직-1
    | |-- a.org
    | |-- b.org
    | |-- org.txt
    | |-- 사용자-0
    | | |-- a.txt
    | | |-- b.txt

데이터 디렉토리 내부의 파일만 나열하려고 합니다. RHEL에서 다음 명령을 사용하여 올바른 결과를 얻을 수 있습니다.

./testdir/ -iwholename "*/data/[!/].txt"를 찾으세요.
a.txt
b.txt
c.txt
d.txt
e.txt

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'

관련 정보