小编sta*_*ker的帖子

grep递归 - 不一致

我正在寻找从根目录递归的特定字符串(主要是.c文件).

当我使用它时,我几乎立即得到一个列表.

grep -rl "F_capture" .
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试通过搜索.c文件来加快速度:

grep -r --include=*.c "F_capture" .
Run Code Online (Sandbox Code Playgroud)

我最终得到了一系列递归目录警告,如下所示:

grep: warning: ./sys/block/fd0/device/bus/drivers/i8042/i8042/serio1/input:event1/subsystem/event3/device/bus/drivers/pcnet32/0000:00:03.0/subsystem: recursive directory loop
Run Code Online (Sandbox Code Playgroud)

当我尝试使用-s参数来抑制警告时,我没有得到警告,但我也没有得到任何回复 - 似乎它已经变成永远不会降落.

grep -rsl --include="*.c" "F_capture" .
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是,为什么我使用的第一个grep会立即返回一些内容,而我针对特定类型文件的其他类型似乎挂断了.我认为有针对性的搜索会更快.

unix linux recursion grep

6
推荐指数
1
解决办法
195
查看次数

赢得批次 - 拆分和连接

我有一个逗号分隔的字符串,格式如下:

host1.mydomain.net,host2.mydomain.net,host3.mydomain.net
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用批处理(不允许安装其他软件或使用 powershell)在每个主机名前加上“http://”和“:8080”,然后将它们串在一起。

http://host1.mydomain.net:8080,http://host2.mydomain.net:8080,http://host3.mydomain.net:8080
Run Code Online (Sandbox Code Playgroud)

下面只是我尝试过的一种方法,拆分字符串然后创建一个新的,但是虽然我能够提取每个主机名,但我似乎无法连接它们。还考虑将“http...”添加到字符串的开头,将“:8080”添加到末尾,并将每个逗号替换为“:8080,http://”,但我无法使添加工作. 如果这是 Linux 和 sed,它会非常简单,但是批处理操作对我来说一直很困难。

@echo off
set themes=Host1,Host2,Host3
set NEWSTR1=
echo list = "%themes%"
for %%a in ("%themes:,=" "%") do (
   echo hostname is %%~a
   if NOT DEFINED NEWSTR1 (      
      set NEWSTR1=remote://%%~a:4447
      echo.%NEWSTR1%
   ) ELSE (
      set NEWSTR1=%NEWSTR1%,remote://"%%a":4447
      echo In the else %NEWSTR1% )
)

echo %NEWSTR1%
Run Code Online (Sandbox Code Playgroud)

windows string cmd batch-file

0
推荐指数
1
解决办法
205
查看次数

标签 统计

batch-file ×1

cmd ×1

grep ×1

linux ×1

recursion ×1

string ×1

unix ×1

windows ×1