首页 > 解决方案 > Bash:按空格分割文件名?备份回滚脚本

问题描述

我需要一些关于 Bash 的帮助。我是一个 Python/Rust 人,不太了解 bash。我有一个“备份”脚本,它将选定的文件复制到“$filename $datetime.backup”文件中。现在我需要编写一个回滚脚本,它将最新的备份文件复制到原始文件上(没有空格和日期时间以及备份后缀)。任何指南将不胜感激。

备份脚本,为您提供方便:

set -e

DT=$(date --iso=seconds)

for f in $*
do
    OLD="${f%/}"
    NEW="${f%/} $DT.backup"
    cp --no-clobber --recursive "$OLD" "$NEW"
done

标签: bash

解决方案


使用参数扩展来获取原始名称。

for b in *.backup ; do
    original=${b% *}
    cp "$b" "$original"
done

${b% *}从 $b 中删除最后一个空格之后的所有内容。


推荐阅读