Linux命令流水线理解

标签 linux unix grep pipelining

我对 Linux 的使用有点陌生。我现在正在玩流水线。谁能告诉我为什么这不起作用:

ls | grep 2 | rm

(我试图删除名称中包含 2 的所有文件) ls | grep 2 部分正在运行(它返回所有带有 2 的文件名) 为什么我现在不能将这些名称通过管道传输到 rm 以删除这些文件?

提前感谢你的四个帮助:)

最佳答案

rm 期望文件名作为参数pipe将文件名发送到 rm 的标准输入 (stdin)。你可以改为:

rm $(ls | grep 2)

删除文件。通过这种方式,文件名作为参数传递,而不是传递给 rm 的标准输入。

我已经用你的命令来解释问题了。一般来说,you shouldn't parse the result of ls command.

关于Linux命令流水线理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816357/

相关文章:

linux - 删除文件路径的一部分

linux - 有没有办法裁剪 NETCDF 文件?

bash - head 和 grep 同时

c - Linux 循环中的 Fork 功能

regex - 如何匹配 PATTERN 但不匹配 PREFIX_PATTERN?

linux - 使用 bash 从另一个文件中存在的文件中删除值

linux - 在 Linux 上使用 grep 压缩

Php exec 命令不会执行

c++ - 有没有办法在 Windows 上托管 IDE,但在 Linux 上托管源代码和编译 (GCC)?

linux - 如何比较 unix (Linux) 中的 2 个符号链接(symbolic link)?