【问题标题】:ls: grep files with name pattern into one linels:将名称模式的文件grep成一行
【发布时间】:2014-01-14 13:24:02
【问题描述】:

我有一些以前缀开头的文件,在这种情况下我将其称为p_。假设我有三个文件,前缀分别为p_1p_2p_3。如何通过 GNU ls 之类的东西将这些文件的列表 grep 到一个以空格分隔的字符串中?

例子:

$ ls | grep p_
p_1 <\
p_2 < --- Remove '\n' after the file name and replace with space
p_3 </

# So that we get...
$ ls [.. solution goes here ..]
p_1 p_2 p_3

现在说,如果我们想rm所有带有前缀的文件,我们可以使用:

$ rm $(ls [.. solution goes here ..])

这将与以下内容相同:

$ rm p_1 p_2 p_3

【问题讨论】:

  • 为什么不直接使用rm p_*

标签: bash unix grep ls


【解决方案1】:

使用| xargs echo:

$ rm $(ls | grep p_ | xargs echo)

或者更直接,| xargs rm

$ ls | grep p_ | xargs rm

甚至更直接,因为参数可以用任何空格分隔,包括换行符:

$ rm $(ls | grep p_)

我个人喜欢通配符:

$ rm p_*

【讨论】:

  • 谢谢!从来不知道任何空格都可以用于命令参数。 编辑:glob,doh!
【解决方案2】:
ls p_*

你也可以这样做

rm p_*

【讨论】:

    【解决方案3】:

    直接 rm p_* 应该可以删除所有以 p_ 开头的文件。

    要显示以p_ 开头的文件,您可以使用ls p_*。您还可以使用ls -l-a 选项和p_* 来查看这些文件的其他详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多