首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:限制ls和grep的输出

Bash:限制ls和grep的输出
EN

Stack Overflow用户
提问于 2012-10-06 05:12:59
回答 3查看 4K关注 0票数 0

让我举一个例子,然后试着解释一下我的问题:

代码语言:javascript
复制
noob@noob:~/Downloads$ ls | grep srt$
Elementary - 01x01 - Pilot.LOL.English.HI.C.orig.Addic7ed.com.srt
Haven - 01x01 - Welcome to Haven.DVDRip.SAiNTS.English.updated.Addic7ed.com.srt
Haven - 01x01 - Welcome to Haven.FQM.English.HI.C.updated.Addic7ed.com.srt
Supernatural - 08x01 - We Need to Talk About Kevin.LOL.English.HI.C.updated.Addic7ed.com.srt
The Big Bang Theory - 06x02 - The Decoupling Fluctuation.LOL.English.HI.C.orig.Addic7ed.com.srt
Torchwood - 1x01 - Everything changes.0TV.English.orig.Addic7ed.com.srt
Torchwood - 1x01 - Everything changes.divx.English.updated.Addic7ed.com.srt

现在我只想删除上面命令的第一个four results。通常,如果我必须删除所有文件,我会执行ls | grep srt$ | xargs -I {} rm {},但在这种情况下,我只想删除前四个文件。

那么,如何限制ls和grep的输出,或者建议我使用另一种方法来实现这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-06 05:14:56

您可以通过管道将命令发送到head -n,以限制为n行:

代码语言:javascript
复制
ls | grep srt | head -4
票数 4
EN

Stack Overflow用户

发布于 2012-10-06 05:19:46

代码语言:javascript
复制
$ for i in `seq 1 345`; do echo $i ;done | sed -n '1,4p' 
1
2
3
4
geee: ~
$ for i in `seq 1 345`; do echo $i ;done | sed -n '335,360p' 
335
336
337
338
339
340
341
342
343
344
345
票数 2
EN

Stack Overflow用户

发布于 2012-10-06 05:28:15

如果你没有太多的文件,你可以使用bash数组:

代码语言:javascript
复制
matching_files=( *.srt )
rm "${matching_files[@]:0:4}"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12754114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档