我有當前工作副本中已在本地修改的文件列表。大約有50個文件已被更改。僅將SVN修改後的文件複製到另一個目錄
我可以這樣做得到這些文件的列表:
svn st | ack '^M'
有沒有一種方法,我可以將這些文件和只有這些文件複製到另一個目錄,這就是所謂backup
?
我有當前工作副本中已在本地修改的文件列表。大約有50個文件已被更改。僅將SVN修改後的文件複製到另一個目錄
我可以這樣做得到這些文件的列表:
svn st | ack '^M'
有沒有一種方法,我可以將這些文件和只有這些文件複製到另一個目錄,這就是所謂backup
?
假設ACK是如grep ...你可以這樣做:
cp `svn st | ack '^M' | cut -b 8-` backup
我會發布此作爲評論...但我不知道如何逃避評論...反引號
是否有可能這樣做和_maintain_文件所在的目錄?例如,如果修改過的文件在'/ images'中,那麼當將文件複製到'/ backup'目錄時,我可以創建/複製'/ images'文件夾嗎? – crmpicco
由於某種原因,在mac上面的命令沒有工作。我使用了以下svn status | grep'^ [ADMR]'| cut -b 8- | xargs -I'{}'cp {}/directory/ –
@forsvarir:反引號(至少在bash中)可以通過$() - constructs(btw允許嵌套表達式)進行交換。我解決了「維護目錄」問題:'爲我在$(svn st | grep^[MA] | cut -b 8-); do x =「b/$(dirname $ i)」; mkdir -p $ x; cp「$ i」「$ x」; done'。希望這可以幫助。 –
這會做(慶典):
#!/bin/bash
set -eu
# for each modified file
for f in $(svn st| awk '/^M/{print $2}'); do
# create a directory under backup root and copy the file there
mkdir -p .../backup/${f%/*} && cp -a $f .../backup/$f
done
svn status | grep '^[ADMR]' | cut -b 8- | xargs -I '{}' rsync -R {} /directry/
我剛剛嘗試了這一點,但它沒有維護文件所在的目錄。所以如果你有一個/inc/picco.txt文件,那麼它不會創建'inc /'。 – crmpicco
rsync -R應保留目錄結構。我已經更新了腳本。請讓我知道這是否適合你。 –
在Windows 8中,可以在當前的svn目錄使用這個命令:
(FOR /F "tokens=2 delims== " %i IN ('svn st ^| findstr "^[ADMR]"') DO @echo %i & echo f| xcopy /f /y %i c:\projects\backup\%i)
試圖運行這個,但它有一些目錄錯誤 – Dmitriy
這對我的作品:
svn status | grep ^M | awk '{print $2}' | xargs -I '{}' cp --parents {} /backup/
請編輯您的帖子,以顯示你的svn管道產生的輸出的一小部分。然後,我們可以輕鬆幫助。它很可能可以作爲單線程來完成。祝你好運。 – shellter