假設我有兩個目錄:D1和D2。如何將兩個目錄的差異複製到新目錄?
D1(F1,F2,F3,F4) D2(F1,F2)
我想複製D1中的文件,這是不是在D2,到另一個目錄D3:
D3 (f3,f4)
我該如何在linux中執行此操作?
感謝名單, 三位一體
假設我有兩個目錄:D1和D2。如何將兩個目錄的差異複製到新目錄?
D1(F1,F2,F3,F4) D2(F1,F2)
我想複製D1中的文件,這是不是在D2,到另一個目錄D3:
D3 (f3,f4)
我該如何在linux中執行此操作?
感謝名單, 三位一體
而從D1複製到D3使用-exclude指定D2 ,它會做...
看到「dirdiff'包。它允許你想要做什麼。
另外,該bash命令行應該這樣做:
for i in `ls D1` ; do if [ -f D2/$i ]; then echo "skip $i" ; else cp D1/$i D3 ; fi done
注意背蜱各地ls D1
- 不是單引號! (在美式鍵盤上,它位於〜(波浪號)之下)
剛剛花了一天的時間,整理出一些類似的東西,並從較舊的question的答案中挑選出來。我結束了一個相當複雜的bash腳本:
#!/bin/bash
# setup folders for our different stages
DIST=/var/www/localhost/htdocs/dist/
DIST_OLD=/var/www/localhost/htdocs/dist_old/
DIST_UPGRADE=/var/www/localhost/htdocs/dist_upgrade/
cd $DIST
find . -type f | while read filename
do
newfile=false
modified=false
if [ ! -e "$DIST_OLD$filename" ]; then
newfile=true
echo "ADD $filename"
elif ! cmp $filename $DIST_OLD$filename &>/dev/null; then
modified=true
echo "MOD $filename"
fi
if $newfile || $modified; then
#massage the filepath to not include leading ./
filepath=$DIST_UPGRADE$(echo $filename | cut -c3-)
#create folder for it if it doesnt exist
destfolder=$(echo $filepath | sed -e 's/\/[^\/]*$/\//')
mkdir -p $destfolder
#copy new/modified file to the upgrade folder
cp $filename $filepath
fi
done