0

我有一个要求,我需要将一些文件从一个位置复制到另一个位置(文件可能存在的位置)。这样做的同时,

  1. 如果文件已经存在,我需要进行备份。
  2. 将新文件复制到同一位置

我在第 2 点遇到问题。当我尝试获取复制文件的目标路径时,我无法提取文件的目录。我尝试使用各种find命令选项,但无法破解它。
我需要从完整文件路径中修剪文件名,以便它可以在cp命令中使用。我是 shell 脚本的新手。任何指针表示赞赏。

4

2 回答 2

2

您可以使用

cp --backup

-b'--backup[=METHOD]' *注意备份选项::. 备份每个可能会被覆盖或删除的文件。作为一种特殊情况,当给定 force 和 backup 选项并且 SOURCE 和 DEST 与现有常规文件的名称相同时,“cp”会备份 SOURCE。这种选项组合的一个有用应用是这个小型 Bourne shell 脚本:

      #!/bin/sh
      # Usage: backup FILE...
      # Create a GNU-style backup of each listed FILE.
      for i; do
        cp --backup --force -- "$i" "$i"
      done
于 2013-08-06T18:07:01.793 回答
0

如果您只需要文件名,为什么不做

basename /root/wkdir/index.txt

并将其分配给仅返回文件名的变量?

于 2013-08-07T17:02:54.247 回答