我正在尝试删除某个目录中的一堆文件(在 Mac OS X 上使用终端)
ls | grep \([1-9]\) | xargs rm
Run Code Online (Sandbox Code Playgroud)
应该可以解决问题,但事实并非如此。我正在尝试删除文件名中括号中带有一位数字的任何文件(从网络下载的重复项),但最终会执行以下操作:
> rm: 520syllabus2010: No such file or
> directory rm: (3).pdf: No such file or
> directory
Run Code Online (Sandbox Code Playgroud)
因为它没有正确解释空间。应删除“520syllabus2010 (3).pdf”
这样做的正确方法是什么?
谢谢,杰夫
我在 Ubuntu 下使用 bash。
目前这适用于当前目录:
catdoc *.doc | grep "specificword"
Run Code Online (Sandbox Code Playgroud)
但是我有很多带有 .doc 文件的子目录。
我怎样才能递归地搜索“特定词”?
在 linux shell 中,我想确保一组特定的文件都以 开头<?,具有确切的字符串并且开头没有其他字符。我怎样才能 grep 或使用其他一些来表达“文件开头”?
编辑:我是通配符,并head没有在同一行给出文件名,所以当我 grep 它时,我看不到文件名。此外,"^<?"似乎没有给出正确的结果;基本上我得到这个:
$> head -1 * | grep "^<?"
<?
<?
<?
<?
<?
...
Run Code Online (Sandbox Code Playgroud)
所有的文件实际上都很好。
如何使用 grep 搜索带有“res”或“rep”的行?
我尝试 "grep -e res|rep" 或 gre -e "rep|rep" 但这不起作用。
我正在使用 Opensuse 10.3 并且想知道命令行工具在目录内的大量 pdf 文件中搜索短语。在 Windows XP 中,资源管理器搜索允许这样做,但速度太慢。这里有 grep 提示吗?
用例是我在 HTML/CSS/JS 文件目录(包括子目录)中搜索特定的 CSS 属性。一些单行 JS 库也有我正在搜索的 CSS 属性。
那么有没有办法告诉 grep 它不应该在比我定义的更长的行上给出结果$max_line_length?
我正在尝试做这样的事情:
grep -r '(?<!notthis)butthis' ./*
Run Code Online (Sandbox Code Playgroud)
当一些应该返回时,我没有得到任何结果。我错过了逃脱吗?还是 OSX 不支持正则表达式环视?
我需要搜索目录及其子目录中每个文件的前 50 行。
这将完成递归部分,但如何限制每个文件的前 50 行?
grep -r "matching string here" .
Run Code Online (Sandbox Code Playgroud)
其中一些文件很大,我只希望它们在前 50 行中匹配。我试图通过不在某些文件中搜索兆字节的二进制数据来加快该过程。
我不知道如何使这个(应该是简单的)脚本工作。基本上我想要的是,根据我的 Parallels vm 的状态运行不同的东西,如下所示:
if [ prlctl list --info ubuntu-vm | grep State == "State: running" ] ; then
echo 'machine is running'
else
echo 'machine is not running'
fi
Run Code Online (Sandbox Code Playgroud)
这当然行不通
我grep -r "searchphrase" /今天跑了,但没有用。我做了一些研究,发现find / -xdev -type f -print0 | xargs -0 grep -H "searchphrase"这是正确的方法。
我收集/proc和磁盘/dev/sda1是不成功的 grep 的罪魁祸首。
我会喜欢一些关于“为什么”的深厚技术背景。我认为内部的某些链接在/proc遍历时会产生无限循环,我读到有更多原因,但没有具体说明。
另外,当原始磁盘被 grep 时会发生什么?是否可以不解释二进制数据(/dev/sda1据我所知可以在 上访问?),因为只有mount具有文件系统类型的 a才能使磁盘中的数据易于理解?因此,仍然可以对二进制字符串进行 grep 吗?