Как найти файлы, соответствующие критериям egrep, а затем выводить их как в формате, который выводится из ls -l [duplicate]

Поскольку это очень популярная тема, и хорошие ответы распространяются повсюду и рассматриваются в большой степени, я счел оправданным составить хорошие ответы от других в более сжатые формы, так что новички имеют простой обзор upfront:

  1. Обычно вы добавляете класс для добавления или изменения функциональности. Итак, , если вы не хотите, чтобы перезаписывал любое поведение Thread, используйте Runnable.
  2. В том же свете , если вам не нужно чтобы наследовать методы потоков, вы можете обойтись без этих накладных расходов, используя Runnable.
  3. Одиночное наследование: если вы расширяете Thread, вы не можете распространяться ни на один другой класс, поэтому, если это то, что вам нужно сделать, вам нужно используйте Runnable.
  4. Хороший дизайн для разделения логики домена с помощью технических средств, в этом смысле лучше иметь задачу Runnable, изолирующую вашу задачу от вашего бегуна.
  5. Вы можете выполнить один и тот же объект Runnable несколько раз, объект Thread, однако, может быть запущен только один раз. (Может быть, причина, по которой Исполнители принимают Runnables, но не Threads.)
  6. Если вы разрабатываете свою задачу как Runnable, у вас есть все гибкость, как ее использовать сейчас и в будущем. Вы можете запустить его одновременно с помощью Executors, но также через Thread. И вы все равно можете использовать / вызывать его не одновременно в пределах одного потока, как и любой другой обычный тип / объект.
  7. Это также упрощает разделение задач логики и параллелизма в модульных тестах.
  8. Если вас интересует этот вопрос, вас также может заинтересовать разница между Callable и Runnable .

2
задан cxw 26 August 2016 в 18:55
поделиться

2 ответа

grep -Zl 3456 * | xargs -0 ls -l

с GNU grep. Возможные варианты:

  • grep -Z и xargs -0: отдельные имена вывода с помощью NULL-байта вместо пробелов. Таким образом, вы можете обрабатывать имена файлов, которые включают пробелы.
  • grep -l: печатать только имена файлов, которые соответствуют
  • ls -l: стандартный ls длинный вывод, который, как представляется, вы просите.

Проверено на последнем cygwin.

4
ответ дан cxw 19 August 2018 в 15:21
поделиться
  • 1
    Он работал .. Большое спасибо. иллюстрации, которые вы предоставили, было очень необходимо. – Tarun 26 August 2016 в 18:05

Здесь нет необходимости в xargs; find может использоваться как для запуска grep, так и для запуска ls или даже для испускания самого выходного файла ls.

find . -maxdepth 1 -type f \
       -exec grep -q -e '1234567' -- '{}' ';' \
       -exec ls -l {} +

... или, еще лучше:

find . -maxdepth 1 -type f \
       -exec grep -q -e '1234567' -- '{}' ';' \
       -ls

Действие -ls использует выходной формат, похожий на ls -l.

-1
ответ дан Charles Duffy 19 August 2018 в 15:21
поделиться
Другие вопросы по тегам:

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