получить последний файл из каталога

Вы должны использовать grep -r CONFIG_SND_SOC_MXS_SGTL5000

Каждая из этих опций config просто представляет собой макрос #define. Многие из них не принадлежат одному файлу, а проверяются в нескольких исходных файлах. CONFIG_64BIT, например, встречается примерно в 1k файлах исходного кода.

0
04.04.2019, 19:10
2 ответа

Попробуйте -опцию 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.
2
28.01.2020, 02:30

За исключением некоторых 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-содержит последовательности байтов, которые не образуют допустимые символы ).

0
28.01.2020, 02:30

Теги

Похожие вопросы