如何使用 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
、-c
、echo "Hello World" >> {}
,允许您 运行 和 shell命令。
另请注意,我做了 -ianme '*1*'
,因为你的问题是 "has 1
within its name" 而不是 "ends with 1
"。
嗨,这是我到目前为止的文件系统,我想要实现的是在每个名称中包含 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
、-c
、echo "Hello World" >> {}
,允许您 运行 和 shell命令。
另请注意,我做了 -ianme '*1*'
,因为你的问题是 "has 1
within its name" 而不是 "ends with 1
"。