bash在ls输出的开头和结尾处追加文本

时间:2018-08-16 09:08:24

标签: unix sed append ls

我想将ls的输出更改为:

1.png
2.png
3.png

进入

Start [1.png] End
Start [2.png] End
Start [3.png] End

我需要在一行的开头和结尾处同时添加一个字符串。 我不反对使用文本文件存储输出,但是如果有更好的方法,我会避免使用它。

我知道我可以使用

ls | sed 's/^/Start [/'

ls | sed 's/$/] End/'

但是有一种方法可以将这两个操作合并为一个语句?并避免使用临时文本文件?

4 个答案:

答案 0 :(得分:0)

请您尝试以下。

ls | awk '{print "start [" $0 "] END"}'

OR

ls | sed 's/^/start \[/;s/$/\] end/'

答案 1 :(得分:0)

使用sed

sed  's/^/start [ /;s/$/ ] end/' 
start [ 1.png ] end
start [ 2.png ] end
start [ 3.png ] end

答案 2 :(得分:0)

ls | sed 's/^/Start [/' | sed 's/$/] End/'

通过实验发现自己。

答案 3 :(得分:0)

我发现使用xargs更容易,请尝试:

$ xargs < <(ls) -I@ echo "start [ @ ] END"

-I@将有助于使用@作为占位符,因此您可以使用echo "start [ @ ] END@将被ls的输出代替