perintah mv - jangan menimpa file

8

Saya ingin mvfile dan tidak menimpa duplikat. The -bsaklar hanya membuat file cadangan tunggal, sedangkan saya mungkin memiliki banyak.

Menurut mvhalaman manual :

Suffix cadangan adalah '~', kecuali ditetapkan dengan --suffix atau SIMPLE_BACKUP_SUFFIX. Metode kontrol versi dapat dipilih melalui opsi - cadangan atau melalui variabel lingkungan VERSION_CONTROL. Inilah nilainya:

tidak ada, mati
tidak pernah membuat cadangan (bahkan jika - backup diberikan)
bernomor, t
membuat cadangan bernomor
ada, nihil
bernomor jika cadangan bernomor ada, sederhana jika tidak
sederhana, tidak pernah
selalu membuat cadangan sederhana

Saya pikir saya ingin menggunakan opsi 'sudah ada, nihil' ... tapi saya tidak tahu bagaimana menyebutnya.

Jika perintah saya adalah:

mv $src $dest

Bagaimana saya bisa menerapkan opsi 'sudah ada, nihil'?

Menjadi teman saya
sumber
Jawaban ini memiliki respons yang baik tentang penggunaan cpalih-alih mv: unix.stackexchange.com/a/9902
Connor Leech

Jawaban:

6

Untuk mengaktifkan existingatau nil(atau salah satu opsi lain), berikan sebagai nilai untuk --backupopsi:

mv --backup=existing "$src" "$dest"
mv --backup=nil "$src" "$dest"

Diperingatkan bahwa ini tidak melakukan apa yang Anda inginkan:

$ mkdir foo bar
$ cp blah/* foo
$ cp blah/* bar
$ mv --backup=nil bar/* foo/* -t blah
mv: will not overwrite just-created ‘blah/a.jpg’ with ‘foo/a.jpg’
mv: will not overwrite just-created ‘blah/b.ogv’ with ‘foo/b.ogv’
mv: will not overwrite just-created ‘blah/cd ef.JpG’ with ‘foo/cd ef.JpG’

Anda sebenarnya ingin numbered/ t:

$ mv --backup=numbered bar/* foo/* -t blah
$ ls blah 
a.jpg  a.jpg.~1~  a.jpg.~2~  b.ogv  b.ogv.~1~  b.ogv.~2~  cd ef.JpG  cd ef.JpG.~1~  cd ef.JpG.~2~
muru
sumber
yang tampaknya sangat samar. Apa opsi cadangan?
Connor Leech
1
@ConnorLeech untuk mengontrol pengaturan cadangan?
muru
0
mv --backup=existing $src $dest

atau

mv --backup=nil $src $dest
Florian Diesch
sumber
Setelah banyak upaya, saya membuat sintaks berfungsi - tetapi opsi nil tidak bekerja. --backup = t tidak. TERIMA KASIH!
BeMy Friend
0
mv --backup=t "$src/$file" "$dest"
Menjadi teman saya
sumber
untuk perinciannya lihatman mv
Penatua Geek