Ls и grep из другого каталога

Получились следующие каталоги:

.
|__ scripts
|    
|__ logs

В моей папке logs я получил файлы, отформатированные таким образом:

AAAAAAA_X1-09-09-2018.log
BBBBBBB_Y2-09-09-2018.log
CCCCCCC_Z3-09-09-2018.log

Когда я запускаю команду ls | grep AAAAAAA*.log" из logs, она работает нормально:

user /my/path/logs #> ls | grep AAAA*log
AAAAAAA_X1-09-09-2018.log

Но если запустить из каталога scripts, я не нашел совпадения:

user /my/path/scripts #>  ls ../logs | grep AAAAA*log

Я заметил, что команда ls ../logs | grep AAAAA* будет работать, но мне нужно заставить сопоставить .log (иногда в этом каталоге создаются другие файлы). Я могу исправить эту проблему, выполнив следующие действия:

ls ../logs | grep AAAAA* | grep log

но мне интересно, почему ls ../logs | grep AAAAA*log работает не с scripts, а с logs?

grep AAAA*log на самом деле просто grep AAAAAAA_X1-09-09-2018.log. * раскрывается ДО запуска grep.
KamilCuk 10.09.2018 11:43
0
1
144
1

Ответы 1

Лучше сначала сменить каталог на log, как показано ниже: -

cd /full/path/log
ls | grep AAAA*log
cd - #go back to the original path

Измените выше в своем сценарии и попробуйте.

Также постарайтесь следовать инструкциям Камиля Цука.

Что ж, похоже, Камил прав, поэтому нет необходимости использовать регулярное выражение, если достаточно поиска по шаблону.

Wiktor Stribiżew 10.09.2018 11:58

Другие вопросы по теме