Использование find и xargs для отображения метки времени файла, который был найден из содержащей строки - PullRequest
0 голосов
/ 25 июня 2019

Мне нужно найти файл из заданной строки внутри и перечислить временную метку этого файла только с помощью команд find и xargs в командном терминале linux

Я пробовал этот код, и он сработал, но выдает ошибку наКоманда ls для длинных строк, нужен более плавный ответ для этой конкретной проблемы

find /home/stajyer -type f -exec grep -H 'ayberk' {} \; |xargs ls -l

Результат:

ls: cannot access '/home/stajyer/myNameChangedFile/aFileInChangedFile4:ayberk': No such file or directory
ls: cannot access 'Binary': No such file or directory
ls: cannot access 'file': No such file or directory
ls: cannot access 'matches': No such file or directory
-rw------- 1 stajyer stajyer 9787 Haz 25 09:45 /home/stajyer/.bash_history

как мой код может выдавать меньше ошибок, соответствующих команде ls?

1 Ответ

0 голосов
/ 25 июня 2019

От человек xargs :

xargs читает элементы из стандартного ввода, разделенные пробелами (которые могут быть защищены двойными или одинарными кавычками или обратной косой чертой) или символом новой строки

Чтобы отключить это, вы можете использовать поток с нулевым разделителем и использовать опцию -0 или --null с xargs и -print0 с find. Это будет выглядеть так:

find /home/stajyer -type f -exec grep -qH 'ayberk' {} \; -print0 | xargs -0 ls -l

Проверено на repl .

...