Простой инструмент CLI для поиска

Используйте tee :

users | tee file | wc -w

В качестве вывода выдает количество пользователей и записывает файл с пользователями в качестве содержимого.


Случай в вашем вопросе :

command >file | command2

Это не сработает. С помощью > file вы перенаправляете вывод команды в файл file , и там же вывод записывается в анонимный канал, где команда command2 читает на другом конце. Это неоднозначное перенаправление.

Команда tee примет файл в качестве аргумента, в котором tee записывает все, что получает со стандартного ввода. tee также записывает все, от стандартного ввода до стандартного вывода, откуда вы можете перенаправить на другие команды или файлы.

1
12.02.2018, 18:40
2 ответа

locatees muy versátil, puede tomar -r y un patrón de expresión regular, por lo que puede hacer muchas coincidencias sofisticadas. Por ejemplo, para hacer coincidir directoriosaa0a1y así sucesivamente, use '/a[0-9]*/'. Esto solo mostrará directorios con archivos, ya que necesita el segundo /en la ruta. Para hacer coincidir solo el directorio, use $para anclar el patrón al final de la ruta, '/a[0-9]*$'.

Tenga en cuenta que hay al menos 2 versiones del comando locate, una de GNU y otra de Redhat (conocida como mlocate ). Use --versionpara encontrar cuál tiene. Difieren ligeramente en el estilo de expresiones regulares. Por ejemplo, si cambiamos el patrón anterior '/a[0-9]*$'para usar +en lugar de *para evitar la coincidencia de apor sí solo, entonces mlocate necesita \+y gnu solo +.

Por ejemplo, para hacer coincidir un directorio ay todo lo que se encuentra debajo de él, puede usar ambas versiones

locate -r '/a\(/\|$\)'

Para mlocate puede usar el prefijo --regexque usa sintaxis extendida

locate --regex '/a(/|$)'

Para hacer lo mismo con la ubicación de gnu, necesitaría agregar la opción --regextype egrep, por ejemplo.

1
27.01.2020, 23:14

Стандартные команды Linux для этого:

  • findкоманда для поиска имен файлов, например:

    • найдите файлы с именем xyz в/tmp

      $ find /tmp -type f -name xyz
      
    • искать каталоги, имя которых содержит 'xyz' в/tmp

      $ find /tmp -type d -name '*xyz*'
      
  • команды find и grep для поиска в содержимом файла, например:

    • найти в /tmpфайлы, содержащие xyz

      $ find /tmp -type f -exec grep -l xyz {} \;
      
2
27.01.2020, 23:14

Теги

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