Tüm dosyaları bir klasörden başka bir klasöre nasıl komut satırıyla taşıyabileceğimi bilmek isterim.
Diyelim ki İndirmelerim klasöründeyim ve tüm dosya adlarını yazmak zorunda kalmadan Videolarım klasörüne taşımak istediğim 100 dosya var.
Tüm dosyaları bir klasörden başka bir klasöre nasıl komut satırıyla taşıyabileceğimi bilmek isterim.
Diyelim ki İndirmelerim klasöründeyim ve tüm dosya adlarını yazmak zorunda kalmadan Videolarım klasörüne taşımak istediğim 100 dosya var.
Bir terminal açın ve şu komutu çalıştırın:
mv -v ~/Downloads/* ~/Videos/
Tüm dosya ve klasörleri İndirilenler klasöründen Videolar klasörüne taşır.
Tüm dosyaları taşımak için değil, klasörleri taşımak için:
Tüm dosyaları (klasörleri değil) İndirilenler klasöründen Videolar klasörüne taşımak istiyorsanız, bu komutu kullanın
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
Dosyaları yalnızca İndirme klasörlerinden taşımak, ancak alt klasörlerden değil:
Tüm dosyaları İndirilenler klasöründen taşımak, ancak İndirme klasöründeki klasörlerdeki herhangi bir dosyayı taşımak istemiyorsanız, şu komutu kullanın:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
Burada,
-maxdepth seçeneği, bulmanın ne kadar denemesi gerektiğini belirtir;
1 , yalnızca find komutunda belirtilen dizini belirtir. Test etmek için ayrıca
2 ,
3 kullanmayı deneyebilirsiniz.
Detaylı bir açıklama için Ubuntu manpage bulabilirsiniz
mv ~/Downloads/* ~/Videos
Alt klasörleri de dahil olmak üzere tüm dosyaları
mv dizinine taşımak ister. % Co_de% (copy) ya da
cp (remove) değerini kullanmak isterseniz, alt klasörleri dahil etmek için
rm (recursive) seçeneğine ihtiyacınız olacaktır.
rsync kullanılarak mümkündür, örneğin:
rsync -vau --remove-source-files src/ dst/
burada:
-v,
--verbose: Ayrıntıları artırın.
-a,
--archive: Arşiv modu;
-rlptgoD(
-H,
-A,
-Xyok) eşittir.
-u,
--update: Alıcıda daha yeni olan dosyaları atla.
--remove-source-filesBu, rsync'e, aktarımın bir parçası olan ve alıcı tarafında başarıyla kopyalanmış olan dosyaları (dizin olmayanlar anlamına gelir) gönderen tarafından kaldırılmasını söyler.
Kök ayrıcalıklarınız varsa, potansiyel izin sorunlarını geçersiz kılmak için
sudo öneki bulunur.
Kullan
mv -v ~/rootfolder/branch/* ~/rootfolder
Umarım bu yardımcı olur. Çünkü aynı acıyı yaşadım ve hatayı düzeltmek için çok zaman harcadım.
cd folderNamehereile taşımak istediğiniz dizine girin.
pwdyazın. Bu, taşımak istediğiniz dizini de yazdıracaktır.
cd folderNamehereile bulunduğu dizine geçin.
mv *.* typeAnswerFromStep2here
Bu, tüm dosyaları bu dizinden diğerine taşıyacak.
Basit durum için:
mv ~/Downloads/* ~/Videos
Nokta dosyalarını da taşımak istiyorsanız, dotglob kabuk seçeneğini ayarlayın.
shopt -s dotglob mv ~/Downloads/* ~/Videos
Bu, kabuk seçenek kümesini bırakır.
Bir kez dotglob kullanımı için, komutları bir alt kabukta çalıştırın:
(shopt -s dotglob; mv ~/Downloads/* ~/Videos)
Bir içeriği yeniden adlandırmak için
mv komutunu nasıl kullandığınız gibi bir içeriğin olduğu veya olmayan bir dizini yeni adına taşımak için:
mv -T dir1 dir2
burada:
-Thedefi normal dosya olarak ele alıyor
dir1dizinin orijinal adıdır
dir2dizinin yeni adıdır
NB:
dir2 öğesinin bulunması gerekmez.
Umarım bu bir kişiye çok zaman kazandırır, bir noob olarak, bundan önce, yeni isimle bir dizin oluşturur ve daha sonra dizinin içeriğini daha önce oluşturulmuş dizine taşırdım.
Alt dizinler için kullan
Bu komut, birçok dosya hedef dizinin alt klasörüne kaydedildiğinde, yani
Downloads/mp4 olduğunda kullanışlıdır. Bu örnekte,
mv -T Downloads/mp4 Videos çalıştırıldığında,
mp4 alt klasörünün kaldırıldı olması ve içerideki tüm dosyaların Videolar klasörüne taşınmasıyla sonuçlanır.
dene
find ~/Desktop -type f -iname "*.mp4" -exec mv {} ~/Videos \;
tipi argüman -type ile bu dosya tipini belirtebilirsiniz.
-iname: Bir dosya aramak için en yaygın ve açık yöntem -name argument.if kullanarak -iname argümanını kullanabileceğinden emin değilsiniz.
mv {} ve sonunda hedef dizini belirtmek ve daha sonra dosyaları mv {} argümanıkullanarak taşımak