利用BASH,如何在目录task2中复制task1中当前的所有文件,这些文件与task2中已经存在的文件没有相同的文件名
时间: 2024-10-02 18:03:35 浏览: 16
gulp-and-watchify:浏览器将多个文件打包为 js
在 Bash 中,你可以使用 `cp` 命令结合通配符来实现这个需求。假设你想从任务1目录 (`src_dir=task1`) 复制所有文件到任务2目录 (`dest_dir=task2`),并且只复制那些任务2中不存在的新文件,可以这样做:
```bash
# 首先创建一个临时文件夹,用于存储新文件
temp_dir=$(mktemp -d)
# 使用 cp 和 '--no-clobber' 参数避免覆盖已有文件
# 并且使用 '*' 作为通配符,匹配 src_dir 中的所有文件
# '! -f' 表示排除的是文件而不是目录
find "$src_dir" -type f ! -name "*.bak" ! -f -exec cp --no-clobber {} "$temp_dir/" \;
# 现在,我们确认新文件是否存在于 dest_dir 中
# 如果存在,则跳过;若不存在,则复制到 dest_dir
cd "$dest_dir"
for file in "$temp_dir"/*; do
if [ ! -e "$file" ]; then
cp "$file" .
fi
done
# 删除临时文件夹
rm -r "$temp_dir"
阅读全文