【问题标题】:How to remove X files in unix如何在 unix 中删除 X 文件
【发布时间】:2016-11-25 14:55:57
【问题描述】:

我将如何执行以下命令?这是我拥有的以下伪代码:

ls -U | head -4 < rm *

我要删除以下四个文件

ubuntu@ip:/tmp$ ls -U | head -4
c9e5aff2-f4f6-459e-9752-466625165fa0.jpg
815626f8-2650-4596-94b9-796a82780390.jpg
b9259a6b-b421-4b64-ba4d-72fd632703a3.jpg
78c243e7-43df-417d-9dcf-a4578f1c1f20.jpg

【问题讨论】:

  • 那永远行不通。这会将rm 的输出重定向为head 的输入。 ls|head -4|xargs rm xargs 获取其标准输入并将其转换为指定命令的命令行参数。
  • ls -U 按目录顺序列出文件,这本质上是任意的。您确定这是您要使用的标准吗?
  • 请注意,如果任何文件名包含空格或某些其他特殊字符,则当前的两个答案都可能失败。

标签: linux bash shell unix rm


【解决方案1】:

xargs 应该可以解决问题:

$ ls -U | head -4 | xargs rm

【讨论】:

  • 尽管到目前为止列出的两种解决方案都有效,但这是更优的解决方案,因为 xargs 会将先前命令的输出流式传输到下一个命令的输入
  • @AmirAfghani 确实如此。我的回答并不是要与计算机的性能竞争,而是如果您的记忆力和我的一样糟糕,可以节省时间。编写 for 循环通常比上 StackOverflow 并弄清楚如何真正做到这一点要快。 :P
【解决方案2】:

如果您不记得 bash 语法,那么简单的 for 循环通常就像一个魅力:

for file in `ls -U | head -4`; do rm $file; done

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 2017-12-15
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2012-06-02
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多