==
сравнивает ссылки на объекты в Java и не является исключением для объектов String
.
Для сравнения фактического содержимого объектов (в том числе String
) необходимо использовать equals
.
Если сравнение двух объектов String
с использованием ==
оказывается true
, это связано с тем, что объекты String
были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String
. Не следует ожидать сравнения одного объекта String
, содержащего то же содержимое, что и другой объект String
, используя ==
для оценки как true
.
Для этого можно использовать команду find:
$ find . -name '*.txt' -a ! -name '*Thomas.txt'
С Bash
shopt -s extglob
ls !(*Thomas).txt
, где первая строка означает «установить расширенное подстановку», см. руководство для получения дополнительной информации Информация .
Другие способы:
find . -type f \( -iname "*.txt" -a -not -iname "*thomas*" \)
ls *txt |grep -vi "thomas"