Не могу открыть файлы в каталоге, используя cat in bash - PullRequest
0 голосов
/ 06 декабря 2018

Эй, ребята, я пытаюсь запустить скрипт оболочки, который ищет каталог, а затем проверяет файлы каталога, чтобы узнать, может ли он найти определенное имя.Основные вещи.Каталог называется labs и находится в моем домашнем каталоге.Файлы не имеют расширения.Сценарий должен быть запущен в моем домашнем каталоге.Я пытаюсь открыть все файлы и найти конкретное имя.Это строка в скрипте, которая вызывает у меня проблемы:

ls labs | xargs cat | grep name

И я получаю следующую ошибку:

cat: cannot open name_of_file

Длякаждый файл, который я нахожу.Почему это не работает вне каталога, но когда я внутри, все нормально.Как я могу заставить это работать?У моего bash нет команды открытия.

1 Ответ

0 голосов
/ 06 декабря 2018

Посмотрите на вывод ls labs.Это список пустых имен файлов, то есть имен файлов без префикса каталога.Таким образом, вы получаете вывод как:

file1
file2
file3

Когда вы передаете это xargs, вы в конечном итоге запускаете команду вроде:

cat file1 file2 file3

Но так как вы не внутри labs каталог (вы в родительском), эти имена файлов относятся к файлам, которые не существуют.Вам необходимо либо сначала перейти в каталог labs:

cd labs; ls | xargs cat | grep name

, либо использовать команду, подобную find, которая возвращает полные пути:

find labs -type f | xargs cat | grep name
...