我正在尝试将grep
输出通过管道传输到rm
,但它输出了无用的东西。是否需要任何开关rm
?或者可以rm
直接提供正则表达式?
ls | grep '^\[Daruchini'| rm
Run Code Online (Sandbox Code Playgroud)
rm: 缺少操作数 尝试 `rm --help' 了解更多信息。
gee*_*aur 67
您需要使用xargs
将标准输入转换为rm
.
$ ls | grep '^Dar' | xargs rm
Run Code Online (Sandbox Code Playgroud)
(注意文件名中的特殊字符;使用 GNU grep,您可能更喜欢
$ ls | grep -Z '^Dar' | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)
)
此外,虽然 shell 不使用正则表达式,但这是一个简单的模式:
$ rm Dar*
Run Code Online (Sandbox Code Playgroud)
(同时,我想我需要更多的睡眠。)
在这里,让 shell 过滤你想要的文件非常简单。请注意,扩展 pattern 的是 shell Dar*
,而不是rm
命令。shell 执行的模式扩展称为globbing。
rm Dar*
Run Code Online (Sandbox Code Playgroud)
在更复杂的情况下,查找find
命令。
为了将输出作为参数传递,我倾向于使用 while 循环,因为我不熟悉 xargs。
ls | grep '^Dar' | while read line; do rm "$line";done;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
74461 次 |
最近记录: |