Ну, простыми словами:
Вы пытаетесь получить доступ к объекту, который не создан или в настоящее время не находится в памяти.
Итак, как это решить:
if (i == null) {
// Handle this
}
Поиск по имени означает, что некоторые фреймворки позволяют использовать FIndObjects с помощью строк, а код может выглядеть так: FindObject («ObjectName»);
find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
Обратите внимание, что вам нужно указать .*/
в начале, потому что find
соответствует всему пути.
Пример:
susam@nifty:~/so$ find . -name "*.jpg"
./foo-111.jpg
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
susam@nifty:~/so$
susam@nifty:~/so$ find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
Моя версия find :
$ find --version
find (GNU findutils) 4.4.2
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0)
susam@nifty:~/so$
susam@nifty:~/so$ find . -regextype foo -regex ".*/[a-f0-9\-]\{36\}\.jpg"
find: Unknown regular expression type `foo'; valid types are `findutils-default', `awk', `egrep', `ed', `emacs', `gnu-awk', `grep', `posix-awk', `posix-basic', `posix-egrep', `posix-extended', `posix-minimal-basic', `sed'.
Простой способ - вы можете указать. * в начале, потому что find соответствует всему пути.
$ find . -regextype egrep -regex '.*[a-f0-9\-]{36}\.jpg$'
найти версию
$ find --version
find (GNU findutils) 4.6.0
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION
FTS(FTS_CWDFD) CBO(level=2)
Вы должны использовать абсолютный путь каталога при применении команды find с регулярным выражением. В вашем примере
find . -regex "[a-f0-9\-]\{36\}\.jpg"
следует изменить на
find . -regex "./[a-f0-9\-]\{36\}\.jpg"
. В большинстве систем Linux некоторые дисциплины в регулярном выражении не могут быть распознаны этой системой, поэтому вам нужно явно указывать -regexty как
find . -regextype posix-extended -regex "[a-f0-9\-]\{36\}\.jpg"
Выражение find -regex
соответствует всему имени, включая относительный путь из текущего каталога. Для find .
это всегда начинается с ./
, затем любых каталогов.
Кроме того, это emacs
регулярные выражения, которые имеют другие правила экранирования, чем обычные регулярные выражения egrep.
Если все они находятся непосредственно в текущем каталоге, тогда
find . -regex '\./[a-f0-9\-]\{36\}\.jpg'
должен работать. (Я не уверен - я не могу заставить подсчитанное повторение работать здесь.) Вы можете переключиться на выражения egrep на -regextype posix-egrep
:
find . -regextype posix-egrep -regex '\./[a-f0-9\-]{36}\.jpg'
(Заметим, что все сказанное здесь для GNU find, я ничего не знаю о BSD, который также является значением по умолчанию на Mac.)
Попробуйте использовать одинарные кавычки ('), чтобы избежать экранирования вашей строки. Помните, что выражение должно соответствовать всему пути, то есть должно выглядеть так:
find . -regex '\./[a-f0-9-]*.jpg'
Кроме того, кажется, что моя находка (GNU 4.4.2) знает только основные регулярные выражения, особенно не синтаксис {36}. Думаю, вам придется обойтись без этого.
Судя по другим ответам, похоже, это может быть ошибкой поиска.
Однако вы можете сделать это следующим образом:
find . * | grep -P "[a-f0-9\-]{36}\.jpg"
Вы возможно, придется немного настроить grep и использовать разные параметры в зависимости от того, что вы хотите, но он работает.