Birden çok dosyayı belirli bir hedef dizine nasıl taşınır?

118

Taşımak istediğim bazı dizinlerde (diğer birçok dosyayla birlikte) bir sürü dosyam var.

Neyse ki, taşımak istediğim tüm dosyalar, adlarında belirli bir tanımlayıcı içeriyor. Bu nedenle, taşınacak dosyaların tam listesini almak için ls | grep IDENTIFIER yapabilirim.

Ancak, mv file /path/to/dest/folder/ 'yi tek seferde nasıl yürütürüm ve tek tek değil (taşınacak çok dosya var)?

    
sordu gilad hoch 08.11.2012 14:13

11 cevap

85

ABC-IDENTIFIER-XYZ.ext veya IDENTIFIER-XYZ.xml öğesini taşımak istiyorsanız, şunları kullanabilirsiniz:

mv *IDENTIFIER* ~/YourPath/

* , sıfır veya daha fazla karakter için bir joker karakterdir , bu, sıfır veya daha fazla karakter anlamına gelir, bunu IDENTIFIER izler, ardından sıfır veya daha fazla karakter .

Bu, içeren tüm dosyaları belirttiğiniz IDENTIFIER dosyasını taşıyacaktır.

    
verilen cevap Evandro Silva 08.11.2012 14:33
166

Kullanabilirsiniz

mv -t DESTINATION file1 file2 file3

ve

mv -t DESTINATION 'ls|grep IDENTIFIER'

çalışır, ancak mv'nin birden çok kez çağrıldığından emin değilim ya da grep her maç için yeni bir satır çıkaracağından emin değilim.

    
verilen cevap tuomaz 14.11.2012 12:07
20

Joker karakterlerini kullanabilirsiniz.

Örnek: .doc uzantılı tüm dosyaları taşımak için

mv *.doc /path/to/dest/folder/

Bu, tüm doc dosyalarını geçerli dizinin altındaki belirli hedefe taşıyacaktır.

Düzenle

Yorumu cevaplamak için.

mv *.ext *.xml *.txt /path/to/dest/folder/

    
verilen cevap Achu 08.11.2012 14:21
15

Bir dizi alakasız dosyayı taşımak istediğinizde (isim ve türlerde ortak bir model yoktur) Bay Rajanand'ın dediği gibi şunları yapabilirsiniz: önce taşımak istediğiniz dosyaları içeren dizine gidin

mv file1.ext1 file2.ext2 file3.ext3.. /destination/

Dosyaların farklı dizinlere dağılması durumunda, yalnızca taşıma komutunda her dosyanın yolunu belirtmeniz gerekir

    
verilen cevap Ismail AL-taharwa 26.03.2014 05:03
10

Tuomaz tekniğini kullanıyorum ama biraz değiştirdim:

mv file1 file2 file3 -t DESTINATION

Bunu hatırlamak daha kolay ve vanilya mv işlemi ile aynı siparişi kullandığı için daha da zorlaşıyor:

mv file1 DESTINATION
    
verilen cevap Blake Frederick 20.01.2015 17:11
7

Bu komutu kullan:

mv 'ls|grep IDENTIFIER' /path/to/dest/folder  

Ancak, bu tür kullanım için önerilmez. Bunun yerine bulun komutunu kullanın.

    
verilen cevap ignite 08.11.2012 14:44
5

Taşınacak çok dosyanız varsa, mv komutu için çok fazla dosyanız olabilir (veya rm gibi diğer komutlar). Her dosyayı tek tek moda gibi bir döngü içinde taşımak için xargs kullanılmasını öneririm. Bunu aşmanın bir yolu yapmak:

ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/

ls -1 (eksi bir), her satırda yalnızca bir dosya adı olmasını sağlar. % Co_de% komutu için takma adları gizlediyseniz, tek bir satırda birden çok dosya adı olabilir ve istemediğiniz bir dosyayı taşımaya niyetlenmediniz.

    
verilen cevap AggieBill 14.11.2012 11:05
2

Çıkışı, mv commnad'e girmek için ls'den kullanabilirsiniz

mv $(ls | grep IDENTIFIER) /path/to/dest/dir

$() arasındaki komut, aramanızla eşleşen dosya adlarının bir listesini döndürür ve bu, mv komutu için bir parametre olarak sağlanabilir.

    
verilen cevap Fuad Saud 13.11.2012 20:38
2
find -type f -name "[range]" -exec mv {} target-directory ';'

bu komut, dosya adlarını herhangi bir kalıp / aralık ile hedef dizine taşıyacaktır.

örn.

find -type f -name "file[1-50000]" -exec mv {} target-directory ';'

dosyaları file1 , file2 ... file50000 - target-directory gibi isimlerle taşıyacak.

    
verilen cevap user734124 07.09.2017 16:51
1

Bu komutu kullanarak birden fazla dosya taşıyabilirsiniz.

mv SourceFilenames ~DestinationPath

    
verilen cevap Rajanand 14.11.2012 11:13
1

Eğer dosyalar aynı direkse

kullanabilirsiniz
mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/

(Ubuntu 16.04'te test edilmiştir)

    
verilen cevap Sruli 01.12.2017 10:19

Etiketlerdeki diğer soruları oku