如何使用 find 和 echo 追加文件

How to use find and echo to append a file

嗨,这是我到目前为止的文件系统,我想要实现的是在每个名称中包含 1 的文本文件中附加 "Hello world"。

root@s11:~/测试# ls -R

.: B

./A: A1 A2

./B: B1 B2

到目前为止我所做的是

root@s11:~/测试#找到。 -iname "*1" -exec echo "Hello World" >> {} \;

root@s11:~/测试#找到。 -iname "*1" -exec 文件 {} \;

./A/A1: 空文件

./B/B1: 空文件

我的机器是 Solaris 11.3

为什么不让它变得简单。尝试以下操作:

find / -name '*1' | while read line; do
    echo "Hello World" >> $line
done

如果这对你有用,请点赞

您传递给 -exec 的是一个要执行的程序和各个参数。特别是,您不要传递 shell 命令。

然而,>> 是一个 shell 结构,所以如果你想使用它,你需要 运行 一个 shell:

find . -iname '*1*' -exec sh -c 'echo "Hello World" >> {}' \;

在这里,传递给 -exec 的各个参数是 sh-cecho "Hello World" >> {},允许您 运行 和 shell命令。

另请注意,我做了 -ianme '*1*',因为你的问题是 "has 1 within its name" 而不是 "ends with 1"。