在 RedHat 中工作的正则表达式在 Ubuntu 中没有给出任何结果

在 RedHat 中工作的正则表达式在 Ubuntu 中没有给出任何结果

我的目标是匹配特定子目录中的特定文件。我有以下文件夹结构

`--数据
    |-- 一个
    |-a.txt
    |-b
    |-- b.txt
    |-c
    |-- c.txt
    |-- d
    |-- d.txt
    |-- e
    |-- e.txt
    |-- 组织-1
    | |-- a.org
    | |-- b.org
    ||-- org.txt
    ||-- 用户-0
    | | |-- 一个.txt
    | | |-- b.txt

我尝试仅列出数据目录中的文件。我能够在 RHEL 中使用以下命令获得正确的结果

查找./testdir/-iwholename“*/data/[!/].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'

相关内容