2013-08-06 110 views
0

我有一个需求,我需要将一些文件从一个位置复制到其他位置(文件可能存在的位置)。虽然这样做,在Unix中获取文件的目录

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

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

回答

2

您可以使用

cp --backup 

-b' --backup [= METHOD]” *注意备份选项::。备份每个文件,否则将被覆盖或删除。作为一种特殊情况,当强制和备份选项为 ,并且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 
+0

谢谢,但是当我使用-b时,出现“b”不是公认标志的错误。 –

+0

从coreutils安装GNU'cp' –

0

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

basename /root/wkdir/index.txt 

并将其分配给一个变量,会只返回文件名?

+0

mani和dtmilano:感谢您的回复。找到了另一种方法,我现在使用'dirname'命令来提取文件目录。 –