- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
对不起,如果这是一个菜鸟问题,但我找不到好的答案。
找到然后删除我可以使用的东西
find . -name ".txt" -exec rm "{}" \;
但是为什么我不能像管道一样将结果传递给 rm
find . -name ".txt" | rm
就像我将它通过管道传递给 grep
find . -name ".txt" | grep a
我从某处读到 rm 不接受来自标准输入的输入,因此我无法通过管道传输它,但这是什么意思?当我输入 rm a.txt 时,它从标准输入中读取,就像我可以 grep 一样,对吗?还是标准输入和命令行之间有区别。救命!
最佳答案
扩展@Alex Gitelman 的回答:是的,“标准输入”和命令行之间是有区别的。
当您键入 rm a.txt b.txt c.txt
时,您在 rm
之后列出的文件称为 arguments,并且是通过一个特殊变量(内部称为 argv
)提供给 rm。另一方面,标准输入看起来像一个名为 stdin
的文件的 Unix 程序。程序可以从这个"file"中读取数据,就像它在磁盘上打开一个常规文件并从中读取一样。
rm
与许多其他程序一样,从命令行获取参数,但忽略标准输入。你可以通过管道传输任何你喜欢的东西;它只会丢弃这些数据。这就是 xargs
派上用场的地方。它读取标准输入上的行并将它们转换为命令行参数,因此您可以有效地将数据通过管道传输到另一个程序的命令行。这是一个巧妙的技巧。
例如:
find . -name ".txt" | xargs rm
find . -name ".txt" | grep "foo" | xargs rm
请注意,如果有任何文件名包含换行符或空格,这将无法正常工作。要处理包含换行符或空格的文件名,您应该改用:
find . -name ".txt" -print0 | xargs -0 rm
这将告诉 find
以空字符而不是换行符终止结果。但是,grep
不会像以前那样工作。而是使用这个:
find . -name ".txt" | grep "foo" | tr "\n" "\0" | xargs -0 rm
这一次 tr
用于将所有换行符转换为空字符。
关于Linux 为什么我不能通过管道找到结果到 rm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307299/
我正在学习 git,但我对暂存和提交文件的不同方式感到困惑。为了解决这个问题,我使用了目录的比喻:工作目录、暂存目录、提交目录。 如果我rm 我的工作目录中的一个文件,它只会仅 从我的工作目录中删除它
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
在 Makefile 中,我读到: -rm -rf(而不是 rm -rf)。 Makefile 中行开头的第一个“-”是什么意思? 最佳答案 这意味着make本身将忽略来自rm的任何错误代码。 在 m
我正在使用此命令尝试删除一个非常大的文件夹中的所有 Thumbs.db 文件。我认为 -f 应该在不要求确认的情况下强制删除,但我仍然被提示在每个文件上输入“y”或“n”。 find "megapac
我想用 GIT 删除整个目录...每次我不断收到相同的错误并且不明白为什么会这样。 我想删除“blue_white”文件夹... ├── css │ ├── design.css │ └──
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
使用 /bin/rm abc.txt 有什么区别以及有时您必须这样做的时候 alias rm然后用 rm abc.txt 执行 最佳答案 /bin/rm将始终引用二进制 rm命令在您的系统上。如果你只
大多数文章,我都读过。他们建议使用 rm(list=ls())但我不知道如果我喜欢使用 rm() 有什么区别 我可以用rm()而不是 rm(list=ls())如果我想清除所有变量? 请给我一些建议。
问题 Bash 中的 rm -d 和 rm -R 命令有什么区别? 我应该使用哪一个? 详情 根据 rm 命令的手册页: rm -d 尝试删除目录以及其他类型的 文件。 rm -R 尝试删除以每个文件
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
标题是描述。 我只是想知道 rm -r 和 rm -R 之间有什么区别。 Linux man 描述似乎完全相同(还有一个,--recursive),但很多人使用 -r 和 -R 好像它们不一样。 所以
我使用 rm、Finder 等从 Git 存储库中删除了一堆文件和目录。 我正在寻找一个 Git 命令,它将这些记录到标记为删除的索引中,就好像我对它们调用了 git rm 一样。 我知道 git a
在 SVN 上,直接从文件系统中删除某些内容(而不是使用 svn)会带来很多麻烦。 我在使用 git 时没有发现这是一个问题,但我注意到 git 有它自己的 rm 实现(git rm). rm 和 g
我想备份我的 gitlab 容器。有两种选择: docker exec -ti my.gitlab.container sh -c "/opt/gitlab/bin/gitlab-rake gitla
我正在关注 this Wikipedia example查找和删除文件。 [jalal@galapagos-04] (5)$ touch 'not important_file' [jalal@gal
我有一个 shell 脚本在 cygwin 环境中的 windows 环境中运行。该脚本有一个清除功能,可以根据特定条件删除系统中的特定文件夹。 我准备好要删除的所有文件夹的列表,然后使用以下命令:
当我们使用 docker build 命令构建 docker 镜像时,我们有两个选项 --force-rm=true 和 --rm=true移除中间容器。这两个选项有什么区别,分别在什么场景下使用。
我在删除Docker容器时遇到问题-当我使用前一个命令时,它不起作用(Docker报告了容器ID,但没有删除它)。后者起作用了。据我所知,Docker语法是相同的: C:\Users\user>doc
我尝试计算数据 x 的每列的总和。但我总是遇到这个错误 "Error in colSums(x, na.rm = T) : invalid 'na.rm' argument" 为什么 na.rm 参数
有人知道如何删除 R 中除一个对象之外的所有内容吗?通常,要删除我编码的所有内容: rm(list=ls()) 所以我试过: rm(c(list=ls()-my_object)) 但它没有用。 最佳答
我是一名优秀的程序员,十分优秀!