在文件夹中的每个txt文件中写一个单词


Answers:


20

一个简单的for可以完成工作:

for i in ./*.txt; do echo 'cat' >> "$i"; done;

这将获得当前目录中所有txt文件的列表,在它们中循环并echo跳转到它们(附加到内容中)。您可以更改>>>,以用cat覆盖文件内容。

您可以做的另一件事是使用tee将流重定向到多个文件。

追加:

echo "cat" | tee -a *.txt

覆盖:

echo "cat" | tee *.txt

使用什么骗局echo "cat" >> *.txt
hytromo

4
@hakermania应该会失败ambiguous redirect
Zanna

13

如果文件不为空,则可以sed不循环使用。要cat在开始时添加:

sed 'i\cat' *.txt

最后添加:

sed 'a\cat' *.txt

要在第二行之后添加:

sed '2 a\cat' *.txt

foo在其中添加行之前:

sed '/foo/ i\cat' *.txt

但是它不适用于空文件。一种错误。

(要实际写入文件测试你需要的后-i选项:sed -i 'a\cat' *.txt


我讨厌sed :)),因为您可以使用它做很多事情,但我不知道它们是:))
Ravexina

@Ravexina sed是我的果酱;)
Zanna

为什么'i\cat'使用反斜杠而不是斜杠?
phuclv

@LưuVĩnhPhúc反斜杠实际上是可选的,您也可以输入'icat'i cat。我相信反斜杠是常规的。您不能使用正斜杠-它会按字面插入
Zanna

4

Python方法:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • 它使用sys模块来遍历命令行参数
  • 每个命令行参数将作为文件打开
  • 带有换行符的“ cat”将在下一步之前写入文件

用法为as ./add_cat.py *.txt,它将对.txt当前工作目录中的所有文件进行操作。对此的改进可能包括使用命令行参数#1作为字符串来写,而不是在此处对“ cat”进行硬编码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.