3

我想在文件夹中每个文件的末尾附加一行。我知道可以使用

echo apendthis >> file

将字符串附加到单个文件。但是递归执行此操作的最佳方法是什么?

4

3 回答 3

8
find . -type f -exec bash -c 'echo "append this" >> "{}"' \;
于 2013-03-24T22:07:17.140 回答
2

从字面上或比喻上...

你的意思是字面意思或比喻方式理解?如果你真的在寻找一个专门的递归解决方案,你可以这样做:

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) 会容易得多。

于 2013-03-24T22:14:27.640 回答
1

另一种方法是使用循环:

find . -type f | while read i; do
    echo "apendthis" >> "$i"
done
于 2013-03-24T22:09:05.223 回答