0

例を示して、私の問題を説明してみましょう。

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 {}が、この場合は上位4つだけを削除します。

したがって、lsとgrepの出力を制限する方法、またはこれを実現する別の方法を提案する方法を教えてください。

4

3 に答える 3

4

コマンドをにパイプして、行head -nに制限することができます。n

ls | grep srt | head -4
于 2012-10-05T21:14:55.723 に答える
2
$ 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
于 2012-10-05T21:19:45.680 に答える
2

ファイルが多すぎない場合は、bash配列を使用できます。

matching_files=( *.srt )
rm "${matching_files[@]:0:4}"
于 2012-10-05T21:28:15.283 に答える