cp - farklı versiyonların kopyalanması ve saklanması


0

terminalin ekran görüntüsü

Farklı içeriğe sahip tüm .aze dosyaları folder3'e nasıl kopyalanır? Ekran ne yapmak istemediğimi gösteriyor. Yaklaşmak istediğim, klasör 3, file1 (1) .aze ve file1 (2) .aze (ve diğer .aze) dosyalarında bulunmak.

3. klasördeki file1.aze dosyasının iki sürümünü istiyorum.

kullanırım

find -name "*.aze" -exec cp {} folder3/ \;

Eklemeye çalıştım --parentsama aynı içeriğe ve aynı ada sahip bir dosyayı sakladım. (Her sürümün sadece bir kopyasını istiyorum.)

bash  cp 

Yanıtlar:


1

İstediğin sonucun ne olduğu bana belli değil. İkisini de istiyor musun folder1/file1.azeve folder2/file1.azedoğrudan folder3mı gireceksin ?

`-folder3
  +-file1.aze        # <-- from folder1
  `-file1.aze        # <-- from folder2

Dosyalardan en az birini yeniden adlandırmadan bu mümkün değildir. Bunun gibi bir şey, sıralı sayılarla dosyaları yeniden adlandırmak için işe yarayabilir:

#!/bin/bash

extension=".aze"
filename="$(basename "$1")"
basename="$(basename "$1" "$extension")"
dst="folder3"

[ "$(dirname "$1")" == "$dst" ] && exit 0

n=0
while [ -f "$dst/$filename" ]; do
  filename="${basename}($((++n)))$extension"
done

cp "$1" "$dst/$filename"

Bu şekilde çalıştırın:

find -name "*.aze" -exec ./filecopy.sh {} \;

Zaten ne elde etmek istiyorsun? Aynı dosyanın birden fazla versiyonunu saklamak için Subversion , Mercurial veya git gibi bir revizyon kontrol sistemi kullanmalısınız .


Merhaba, tam olarak yapmak istediğim şey bu. File1 (1) .aze ve file1 (2) .aze gibi yeniden adlandırılmaları gerektiğini biliyorum. Gerçekten çok karmaşık bir ağaçta çok fazla .odt dosyası var, bu büyük bir karmaşa ve sadece aynı adı aldıkları için hiçbir şeyi kaçırmadan her .odt'u almak istiyorum. Bunu sadece bir kez yapacağım.

Çok teşekkürler, her şey çalıştı, harika bash betiği! Yapamayacağı tek şey, aynı ada sahip dosyanın aynı olmadığını kontrol etmesidir. Ama eminim ki sadece benzersiz dosyalara sahip olmamda yardımcı olacak başka bir komut var. İyi akşamlar

@ user2178064 diffİki dosyanın farklı olup olmadığını kontrol etmek için kullanın .
Ansgar Wiechers

Evet, bu komutu buldum ama yüzlerce dosyam var. Ve son klasörde neden böyle bir isimle bazı dosyalar bulduğum hakkında bir fikrim var: "matematik 4 (5) (1) .odt" ve "matematik (5) .odt" ve diğer tüm matematik (1 ... 5 ) Odt. Kod içinde bir if koşulu uygulamak çok zor görünüyor. Ben manuel olarak yapacağım sanırım.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.