Centos найти командную загадку - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть структура каталогов, как показано ниже (Centos 7 и Ma c обе одинаковые проблемы)

mkdir -p test/lemon-ip-ip/2020-04-08
mkdir -p test/king-ip-ip/2020-04-08

теперь мне нужно найти только "test / lemon-ip-ip / 2020-04- 08 "используя команду find для этого, я сделал это

find test/lemon-ip-ip -maxdepth 1 -name ????-??-??

, это дает правильный ответ

test/lemon-ip-ip/2020-04-08

, это то, что я хочу, и работал до сих пор. Однако, когда я создал каталог "king-ip-ip /", эта команда

find test/king-ip-ip -maxdepth 1 -name ????-??-??

выдает неправильный вывод

test/king-ip-ip/
test/king-ip-ip/2020-04-08

, это также возвращает родительский элемент напрямую "test / king- ip-ip / "это происходит только с этой заданной c строкой, когда я меняю каталог, чтобы снова сказать" test / king-ip / ", это работает нормально. Я не могу изменить имя каталога. Может кто-нибудь сообщить мне, что является причиной этой проблемы?

Мне нужно, чтобы конечный результат был

test/king-ip-ip/2020-04-08

Спасибо, Радж

1 Ответ

1 голос
/ 10 апреля 2020

Причиной этого является то, что шаблон ????-??-?? соответствует любым 4, 2 и 2 символам с тире между ними. К таким строкам относятся 2020-04-08, aaaa-bb-cc и king-ip-ip.

. Хотя вы не запрашиваете альтернатив, мое предложение будет одним из них, в зависимости от деталей его использования:

# Don't use find at all
echo test/king-ip-ip/????-??-??

# Only search files strictly inside the directory, not the dir itself
find test/king-ip-ip/* -maxdepth 0 -name '????-??-??'
find test/king-ip-ip   -maxdepth 1 -depth 1 -name '????-??-??'

# Only match numbers, not other characters
find test/king-ip-ip   -maxdepth 1 -name '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...