在Unix系统中,需要将字符串与ls命令输出的每一行连接起来。

8

我是一个Shell脚本的初学者。以下是我在UNIX Korn Shell中的要求。

示例:

当我们使用ls命令列出文件并将其重定向到文件时,文件名将会被存储如下。

$ ls FILE*>FLIST.TXT
$ cat FLIST.TXT
FILE1
FILE2
FILE3

但我需要输出以下带有前缀常量字符串STR,的内容:
$ cat FLIST.TXT
STR,FILE1
STR,FILE2
STR,FILE3

请告诉我应该使用哪个ls命令来实现这个输出。
2个回答

13

您无法仅使用ls命令在每个文件前添加数据。 ls的存在是为了列出文件。
您需要与ls一起使用其他工具。

您可以使用sed命令在每行前附加内容:

cat FLIST.TXT | sed 's/^/STR,/'

这将把更改发送到 stdout


如果您想更改实际文件,请在原地运行 sed

sed -i -e 's/^/STR,/' FLIST.TXT  

在写入文件之前执行追加操作,可以将 ls 管道传递给 sed

ls FILE* | sed 's/^/STR,/' > FLIST.TXT

我需要在列出和重定向命令时完成这个任务。在问题中我已经提到了这一点。 - TechVolcano
@TechVolcano ls FILE* | sed 's/^/STR,/' > FLIST.TXT @TechVolcano ls FILE* | sed 's/^/STR,/' > FLIST.TXT - Trevor Hickey

8
以下内容应该可行:
ls FILE* | xargs -i echo "STR,{}" > FLIST.TXT

对于由ls过滤的每个文件名,在追加之前添加"STR,"前缀。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接