在Unix中获取文件的目录

时间:2013-08-06 18:02:23

标签: shell unix scripting

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

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

2 个答案:

答案 0 :(得分:2)

您可以使用

cp --backup
  

-b' - 备份[= METHOD]”        *备注备份选项::。备份每个文件        否则将被覆盖或删除。作为特例,`cp'        强制备份选项和备份选项时备份SOURCE        给定和SOURCE和DEST是现有的同名,        常规文件。这种组合的一个有用的应用        options是这个小小的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

答案 1 :(得分:0)

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

basename /root/wkdir/index.txt

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