Kullandığımda
cp -R inputFolder outputFolder
sonuç bağlama bağımlıdır :
- yoksa
outputFolder
, yaratılır ve klonlanan klasör yolu oluroutputFolder
. - eğer
outputFolder
varsa, o zaman yaratılan klonoutputFolder/inputFolder
Bu korkunç , çünkü bazı kurulum betiği oluşturmak istiyorum ve eğer kullanıcı onu iki kez yanlışlıkla çalıştırırsa outputFolder
, ilk kez yaratmış olacak , sonra ikinci çalıştırmada tüm şeyler bir kez daha yaratılacak outputFolder/inputFolder
.
- Her zaman ilk davranışı istiyorum: orijinalin yanında (bir kardeş olarak) bir klon oluşturun.
cp
Taşınabilir olmak için kullanmak istiyorum (örneğin MINGWrsync
gönderilmedi)- Kontrol ettim
cp -R --parents
ama (klon olmayacak kadar tüm yol dizin ağacında yukarı bu yolu yeniden oluştururoutputFolder
amasome/path/outputFolder
) --remove-destination
veya--update
2'nin hiçbir şeyi değiştirmemesi durumunda, yine de şeyler kopyalanır.outputFolder/inputFolder
Bunu outputFolder
(eğer klasör yoksa o zaman ...) varlığını kontrol etmeden veya kullanmadan bunu yapmanın bir yolu var mı rm -rf outputFolder
?
Bunu yapmanın kararlaştırılmış, taşınabilir UNIX yöntemi nedir?
rsync
?
cp
, iki tar
komut arasında borulama yapmak ağaç kopyalamanın iyi ve güvenilir bir yoludur.
rsync
gönderilmemiş olan çalışmasını istiyorum .
tar -C input -cf - . | tar -C output -xf -
çalışır. -C
çalışma dizinini değiştirir, ancak standart bir seçenek değildir, bu nedenle desteklenmiyorsa, başlamak için doğru çalışma dizinlerinde iki katranı çalıştırmanız gerekir, örneğin ( cd input && tar -cf - . ) | ( cd output && tar -xf - )
Windows ile uğraşıyorsanız, sadece roaima'nın yanıtını kullanırdım.
mv
önlenir?