看来我在滥用grep/ egrep。
我试图在多行中搜索字符串,但找不到匹配项,而我知道我要查找的内容应该匹配。最初我认为我的正则表达式是错误的,但我最终读到这些工具是按行运行的(而且我的正则表达式是如此微不足道,这不可能是问题)。
那么,应该使用哪种工具来跨多行搜索模式呢?
我想递归且唯一地列出包含给定单词的文件。
示例:检查单词“check”,我通常做的是一个 grep
$ grep check * -R
Run Code Online (Sandbox Code Playgroud)
但是由于这个词出现的次数很多,我得到了很多输出。所以我只需要列出包含给定搜索词的文件名。我猜有些招用find和xargs会在这里就够了,但不知道。
有任何想法吗?
我偶尔会搜索vim或less使用/or 中的文件,?但据我所知,搜索模式区分大小写。
因此,例如,/foo不会找到相同的东西/FOO。有没有办法让它不那么严格?如何搜索vim或搜索less不区分大小写的模式?
几个月前我下载了一个视频。我不太记得保存它的名称。是否有任何命令或任何方法只输出视频文件,以便我可以在那里搜索我的视频?从手册页,我找不到找到做这项工作的任何选项。
我下载的视频文件可能有任何扩展名(如 webm 等),而且可能我当时将名称更改为诸如“abcde”之类的名称,我现在不记得了。所以搜索不能基于文件名!
(仅提一个相似之处:在 perl 中有检查文件是文本文件还是二进制文件等的命令。类似地,可能有一种方法可以检查其视频文件还是多媒体文件)
我有一个名为Media Gothic的字体。如何在 Linux 中找到该字体的文件名?我需要将该文件复制到另一个系统。我试过了:
find /usr/share/fonts/ -name '*media*'
Run Code Online (Sandbox Code Playgroud)
但这没有结果。gothic给出了一些其他字体。TTF 是二进制格式,所以我不能使用grep.
给定以下结构:
oz123@debian:~/ $ tree .
.
??? a
? ??? a1
? ??? a2
? ??? a3
??? a1
? ??? a11
? ??? a12
? ??? a31
??? b
? ??? b1
? ??? b11
? ? ??? b21
? ? ??? b31
? ??? b12
? ??? b3
??? c
16 directories, 0 files
Run Code Online (Sandbox Code Playgroud)
我发现以下似乎不错的解决方案,但我必须证明没有测试用例会失败。
-links各州的帮助页面:
您还可以使用“-links”搜索具有一定数量链接的文件。目录通常至少有两个硬链接;他们的 。入口是第二个。如果它们有子目录,每个子目录也有一个硬链接,称为 .. 到其父目录。这 。和 .. 目录条目通常不会被搜索,除非在 find 命令行中提到它们。
oz123@debian:~/ $ find . -type d -links 2 …Run Code Online (Sandbox Code Playgroud) 一个简单的问题,我正在运行以下 find 命令:
find . -type d \( -path ./.git -o \
-path ./log -o \
-path ./public -o \
-path ./tmp \) \
-prune -o \
-print
Run Code Online (Sandbox Code Playgroud)
列出我目录中的所有文件,不包括指定目录。
这很好用,但是,我还想做的是从输出中排除任何实际目录,因此如果有如下目录结构:
test
-- foo.text
-- bar.text
Run Code Online (Sandbox Code Playgroud)
当我运行我的命令时,我想看到:
./test/foo.text
./test/bar.text
Run Code Online (Sandbox Code Playgroud)
代替:
.
./test
./test/foo.text
./test/bar.text
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
我尝试了这两个命令,命令 find | grep 'filename' 比简单find 'filename' 命令慢很多倍。
这种行为的正确解释是什么?
我需要在某些具有相同名称的文件中搜索并替换所有出现的未知字符。
使用 vi 打开此类文件,我读取了该字符的 <91> 代码。用nano打开它们,我读到一个菱形(黑色隆隆声)上的“问号”。
我想用引号 (') 替换这种未知字符。我尝试了很多方法但没有运气。
我试过:
find ./ -name filename.txt -exec perl -i~ -pe "s/\x91/'/" {} \;
find ./ -name filename.txt -exec sed -i "s/\x91/'/g" {} \;
Run Code Online (Sandbox Code Playgroud)
编辑 有关角色的更多信息:
Hexadecimal: 91 68 74 74
Decimal: 145 104 116 116
Octal: 221 150 164 164
Binary: 10010001 01101000 01110100 01110100
LC_ALL=C sed -n l < file
\221
Run Code Online (Sandbox Code Playgroud)
如果您需要更多,请询问!
我的硬盘上存储了大量音乐收藏;浏览了一下,发现有些相册目录下有很多重复的文件。通常,副本存在于同一目录中的原始文件旁边。
通常格式为filename.mp3,重复文件为filename 1.mp3。有时可能会有多个重复文件,我不知道文件夹之间是否存在重复文件(例如专辑目录的重复文件)。
有什么方法可以扫描这些重复文件(例如,通过比较文件大小,或比较整个文件以检查它们是否相同),查看结果,然后删除重复文件?名称较长或修改/创建日期较近的名称通常是删除的目标。
有没有可以在 Linux 上执行此操作的程序?