ls:将名称模式的grep文件放入一行

时间:2013-12-26 23:06:41

标签: bash unix grep ls

我有一些以前缀开头的文件,我将在此上下文中调用p_。假设我有三个文件,前缀名为p_1p_2p_3。如何通过像GNU ls这样的文件列表将这些文件列入一个以空格分隔的字符串?

示例:

$ 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

3 个答案:

答案 0 :(得分:4)

使用| xargs echo

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

或更直接地,| xargs rm

$ ls | grep p_ | xargs rm

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

$ rm $(ls | grep p_)

我个人喜欢用globbing:

$ rm p_*

答案 1 :(得分:2)

ls p_*

你也可以

rm p_*

答案 2 :(得分:0)

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

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