我想将文件夹中的所有文件列为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命令来完成。
答案 0 :(得分:1)
我用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 。 将新空格替换为您想要追加的任何字符串,包括新空格。它正确地为我工作。尝试并回复,如果不工作:)