Вы должны использовать grep -r CONFIG_SND_SOC_MXS_SGTL5000
Каждая из этих опций config просто представляет собой макрос #define
. Многие из них не принадлежат одному файлу, а проверяются в нескольких исходных файлах. CONFIG_64BIT
, например, встречается примерно в 1k файлах исходного кода.
Попробуйте -опцию r для xargs
-r, --no-run-if-empty
If the standard input does not contain any nonblanks, do not run the command. Normally, the command is run once even if there is no input. This option is a GNU extension.
За исключением некоторых BSD, xargs cmd
по-прежнему запускает cmd
один раз без аргументов, когда ввод пуст. GNUxargs
(реализация, которая также представила -0
), имеет опцию -r
(, которая теперь также поддерживается несколькими другими реализациями ), чтобы избежать этого.
Теперь есть несколько других проблем с вашим подходом:
xargs
будет запускаться ls -t
несколько раз, поэтому вы не получите последний файл, а только последний из первого пакета -d
в ls
, что означает, что если какой-либо из этих файлов относится к типу каталога , их содержимое будет указано. -print0
/ xargs -0
, что позволяет обрабатывать произвольные имена файлов, но это не работает, когда вы используете ls -t
, который больше не выводит список файлов с разделителями NUL -. Здесь вы можете использовать zsh
там, где это становится тривиальным:
newest=(/mnt/synology/bk/bk-*(Nmh-1om[1]))
if (($#newest)); then
printf 'Newest: %s\n' $newest
else
echo none found
fi
Или с GNU find
(, который вы, вероятно, используете, так как -maxdepth
и -mmin
являются расширениями GNU )и sort
/cut
/head
реализации поддержки символов NUL в их вводе:
find /mnt/synology/bk -mindepth 1 -maxdepth 1 \
-name 'bk-*' -mmin -60 -printf '%T@/%p\0' |
tr '\n\0' '\0\n' |
sort -rn |
cut -d/ -f2- |
head -n1 |
tr '\0' '\n'
Однако(обратите внимание, что, в отличие от zsh
, find
может не найти некоторые bk-*
файлы, если часть после bk-
содержит последовательности байтов, которые не образуют допустимые символы ).