如何在txt文件中附加find和string的输出?

时间:2016-03-22 11:55:06

标签: ubuntu

我想将文件夹中的所有文件列为txt文件,但同时我需要在它们旁边写一个字符串,例如:

aaa.txt应采用以下形式:

/home/user/a1.jpg 1
/home/user/a2.jpg 1
/home/user/a3.jpg 1
/home/user/a4.jpg 1

我可以用

获得第一个
find `pwd` | cat > aaa.txt

但是,我不能在每行旁边写“1”。有数百万行,所以我也不能手动完成。有没有办法做到这一点?

顺便说一句,我正在使用Ubuntu,如果可能的话,它需要通过bash命令来完成。

3 个答案:

答案 0 :(得分:1)

AWK

我用awk这个

find `pwd` | awk -F\, '{print $1 " 1"}'

AWK是各种报告生成任务的绝佳工具。与sed一起,它是我的核心UNIX / Linux工具之一。 Sed缺乏对循环,数组和条件的支持,所以AWK是两者中更强大的。

您可以猜测它是如何工作的,-F设置字段分隔符(以避免空格),并且AWK在线有很多好的资源。试试这个here。是的,一开始语法有点奇怪,但确实值得努力学习基础知识。


桑达

正如所指出的,你可以使用sed来解决这个问题,对于这个例子,它可能是更简单和更好的解决方案,但它的功能有限。这两个here on Stackoverflow有很好的比较。

答案 1 :(得分:1)

如果文件名中包含空格,AWK将不能仅使用打印$ 1。

改为使用SED。

find `pwd` | sed 's/$/ 1/' > aaa.txt

如果需要,Sed会为您提供更多的搜索和替换操作。

答案 2 :(得分:0)

这很容易。一旦aaa.txt完成如下:

  

/home/user/a1.jpg
  /home/user/a2.jpg
  /home/user/a3.jpg
  /home/user/a4.jpg

使用常规搜索语法在aaa.txt中查找 new-spaces 将新空格替换为您想要追加的任何字符串,包括新空格。它正确地为我工作。尝试并回复,如果不工作:)

相关问题