2013-08-06 142 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'命令來提取文件目錄。 –