내 목표는 특정 하위 디렉터리의 특정 파일을 일치시키는 것입니다. 다음과 같은 폴더 구조가 있습니다
`-- 데이터 |-- |-- 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'