我写了一个bash函数来设置一个新项目时自动执行一系列操作。以下是示例目录结构。我有两个项目,还有一些模板文件和代码。
~/projects
├── template_files/
│ ├── folder_A1/
│ ├── file_A2
│ └── ...
│
├── codepieces/
│ ├── file_X
│ └── ...
│
├── project1/
│ ├── file_X
│ └── ...
│
├── project2/
│ ├── file_X
│ └── ...
bash函数中的一项操作将整个template_files结构复制(添加/覆盖)到项目中。
$ cp -a template-files/. projectX
我想对我的代码做同样的事情,除了不添加或替换外,我想将内容追加到现有文件中(而不像$ echo codepieces/file_X >> projectX/file_x
那样一个接一个地完成。
因此,我正在寻找将$ cp -a
与$ echo codepieces/file_X >> projectX/file_x
的功能结合在一起的东西。 project1的结果如下:
~/project1
├── folder_A1/
├── file_A2
├── file_X (original code is appended with codepiece)
└── ...
答案 0 :(得分:0)
一个简单的bash函数,您可以根据自己的条件进行调整:
cp-a_with-append(){
if [ ! -d "$1" ] || [ ! -d "$2" ]; then
echo 1>&2 Usage: cp-a_with_append SRCDIR DESTDIR
else
( cd "$1" && find ) | while read p; do
pin="$1/$p"
pout="$2/$p"
# [ -d "$pin" ] && mkdir -p "$pout"
[ -f "$pin" ] && [ -f "$pout" ] && cat "$pin" >> "$pout"
touch -cr "$pin" "$pout"
done
fi
}