我想在文件夹中每个文件的末尾附加一行。我知道可以使用
echo apendthis >> file
将字符串附加到单个文件。但是递归执行此操作的最佳方法是什么?
find . -type f -exec bash -c 'echo "append this" >> "{}"' \;
你的意思是按字面意思或比喻方式理解?如果你真的在寻找一个专门的递归解决方案,你可以这样做:
operate () {
for i in *; do
if [ -f "$i" ]; then
echo operating on "$PWD/$i"
echo apendthis >> "$i"
elif [ -d "$i" ]; then
(cd "$i" && operate)
fi
done
}
operate
否则,就像其他人所说的那样,使用find(1) 会容易得多。
另一种方法是使用循环:
find . -type f | while read i; do
echo "apendthis" >> "$i"
done