标签: grep

在查找结果中使用 xargs 时,如何处理文件名中的空格?

我的一个常见做法是对某种类型的所有文件执行 grep,例如,找到所有包含“rumpus”一词的 HTML 文件。为此,我使用

find /path/to -name "*.html" | xargs grep -l "rumpus"
Run Code Online (Sandbox Code Playgroud)

有时,find会返回名称中带有空格的文件,例如my new file.html. 但是,当xargs将此传递给grep时,我收到以下错误:

grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我可以看到这里发生了什么:管道或xargs正在将空格视为文件之间的分隔符。但是,对于我的一生,我无法弄清楚如何防止这种行为。可以用find+完成xargs吗?还是我必须使用完全不同的命令?

find grep pipe xargs

31
推荐指数
3
解决办法
2万
查看次数

不需要整行,只需要正则表达式的匹配

我只需要从正则表达式中获取匹配项:

$ cat myfile.txt | SOMETHING_HERE "/(\w).+/"
Run Code Online (Sandbox Code Playgroud)

输出必须只是括号内匹配的内容。

不要认为我可以使用grep因为它匹配整行。

请让我知道如何做到这一点。

shell bash grep regex

27
推荐指数
4
解决办法
8万
查看次数

如何使用 Linux `find` 命令查看隐藏文件

在 Linux 服务器上,我需要在当前目录和所有子目录中查找具有特定文件扩展名的所有文件。

以前,我一直使用以下命令:

find . -type f | grep -i *.php
Run Code Online (Sandbox Code Playgroud)

但是,它找不到隐藏文件,例如.myhiddenphpfile.php。下面找到隐藏的 php 文件,而不是非隐藏的文件:

find . -type f | grep -i \.*.php
Run Code Online (Sandbox Code Playgroud)

如何在同一命令中同时找到隐藏和非隐藏的 php 文件?

linux files command-line-interface find grep

24
推荐指数
2
解决办法
8万
查看次数

何时在 grep 中使用单引号、双引号或不使用引号?

在尝试在文件中搜索简单模式“hello”时,以下所有形式的 grep 都有效:

  • grep你好文件1
  • grep“你好”文件1
  • grep“你好”文件1

是否存在上述形式之一有效但其他形式无效的特定情况。如果我用一个代替另一个有什么区别吗?

unix shell grep command unix-shell

23
推荐指数
2
解决办法
4万
查看次数

19
推荐指数
1
解决办法
537
查看次数

如何仅在关键字 grep 搜索后显示文件名?

我目前在一个目录中有 n 个数据文件,其中每个文件最多有 1 行很长的数据。我的目录结构是

director/
    data1.json
    data2.json
    data3.json
Run Code Online (Sandbox Code Playgroud)

我知道这些文件中至少有一个包含我正在寻找的关键字,但是由于一行数据太长,它覆盖了我的整个终端。如何仅在执行关键字 grep 后获取文件名?我使用的 grep 命令是:

grep keyword *.json
Run Code Online (Sandbox Code Playgroud)

grep

18
推荐指数
2
解决办法
1万
查看次数

可以改用awk吗?

我想从中获取数字rating作为输出

# nc localhost 9571 
language:
language:en_ZA.UTF-8
language:en_ZW.UTF-8
session-with-name:Ubuntu Classic (No effects):gnome-session --session=2d-gnome
session-with-name:Ubuntu (Safe Mode):gnome-session -f --session=2d-gnome
session-with-name:Ubuntu Classic:gnome-session --session=classic-gnome
xsession:/etc/X11/Xsession
rating:94
Run Code Online (Sandbox Code Playgroud)

我可以这样做

# nc localhost 9571 | grep rating | cut -d: -f2
94
Run Code Online (Sandbox Code Playgroud)

但可以awk用来代替更简单的解决方案吗?

linux bash grep awk

17
推荐指数
4
解决办法
1864
查看次数

搜索 .gz 日志文件

是否存在一个神奇的 shell 管道,它可以轻松地对一堆 .gz 日志文件进行 grep,而无需将它们提取到某处?

.gz 文件是 Apache 日志,是日志轮换的结果。我想快速检查过去访问某些 URI 的频率。

grep gzip logrotate apache-2.2

16
推荐指数
2
解决办法
1万
查看次数

确认搜索文字字符串

当我想搜索 html 标签的一部分时,我厌倦了不得不逃避的事情。

我怎样才能准确搜索我输入的内容不必转义?

例如

ack-grep 'console.log(foo'
Run Code Online (Sandbox Code Playgroud)

我得到:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/
Run Code Online (Sandbox Code Playgroud)

grep regex

16
推荐指数
1
解决办法
6942
查看次数

匹配后的 grep 行直到结束

我有以下输出git status,我如何grep处理之后的所有内容Untracked files

[alexus@wcmisdlin02 Test]$ git status 
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   app/.gitignore
#   new file:   app/app.iml
#   new file:   app/build.gradle
#   new file:   app/proguard-rules.pro
#   new file:   app/src/androidTest/java/org/alexus/test/ApplicationTest.java
#   new file:   app/src/main/AndroidManifest.xml
#   new file:   app/src/main/java/org/alexus/test/MainActivity.java
#   new file:   app/src/main/res/layout/activity_main.xml
#   new file:   app/src/main/res/menu/menu_main.xml
#   new file:   app/src/main/res/mipmap-hdpi/ic_launcher.png
#   new file:   app/src/main/res/mipmap-mdpi/ic_launcher.png …
Run Code Online (Sandbox Code Playgroud)

command-line-interface grep

15
推荐指数
3
解决办法
5万
查看次数