Saya mencoba menyalurkan grep
output rm
, tetapi menghasilkan hal-hal yang tidak berguna. Apakah diperlukan saklar rm
? Atau dapatkah rm
disediakan regexp secara langsung?
ls | grep '^\[Daruchini'| rm
rm: operan yang hilang Coba `rm --help 'untuk informasi lebih lanjut.
Jawaban:
Anda perlu menggunakan
xargs
untuk mengubah input standar menjadi argumenrm
.(Hati-hati dengan karakter khusus dalam nama file; dengan GNU grep, Anda mungkin lebih suka
)
Selain itu, sementara shell tidak menggunakan regexps, itu adalah pola sederhana:
(Sementara itu, saya pikir saya perlu lebih banyak tidur.)
sumber
rm Dar*
, tidakrm !(Dar*)
.zsh
^
mode (mirip denganbasg
!
hal itu).| tr "\n" "\0"
sebelumxargs
bit. Terlihat dalam posting ini: stackoverflow.com/questions/20307299/…Jangan parsing output dari
ls
.Di sini, sangat mudah untuk mendapatkan shell untuk memfilter file yang Anda inginkan. Perhatikan bahwa shelllah yang memperluas polanya
Dar*
, bukanrm
perintahnya. Ekspansi pola yang dilakukan oleh shell disebut globbing .Dalam kasus yang lebih kompleks, cari
find
perintah.sumber
Jika Anda ingin membatasi output
grep
oleh baris baru dan bukan spasi putih, Anda bisa menentukannyaxargs
melalui-d
opsi.(seperti yang dijelaskan dalam pertanyaan ini )
sumber
Untuk melewatkan output sebagai argumen, saya cenderung menggunakan loop sementara karena saya tidak terbiasa dengan xargs.
sumber
Perintah terbaik bagi saya adalah:
sumber