Tüm dosyaları bir klasörden komut satırına sahip başka bir klasöre nasıl taşıyabileceğimi bilmek istiyorum.
Diyelim ki İndirilenler klasörümdeyim ve tüm dosyaların adını yazmak zorunda kalmadan, Videolar klasörüme taşımak istediğim 100 dosya var.
Tüm dosyaları bir klasörden komut satırına sahip başka bir klasöre nasıl taşıyabileceğimi bilmek istiyorum.
Diyelim ki İndirilenler klasörümdeyim ve tüm dosyaların adını yazmak zorunda kalmadan, Videolar klasörüme taşımak istediğim 100 dosya var.
Yanıtlar:
Bir terminal açın ve bu komutu çalıştırın:
mv -v ~/Downloads/* ~/Videos/
Tüm dosya ve klasörleri İndirilenler klasöründen Videolar klasörüne taşıyacaktır.
Tüm dosyaları taşımak, ancak klasörleri taşımak için:
Tüm dosyaları (ancak klasörleri değil) Yüklemeler 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
Yalnızca dosyaları İndirme klasörlerinden taşımak, ancak alt klasörlerden taşımak için:
Tüm dosyaları İndirilenler klasöründen taşımak, ancak İndirme klasöründeki klasörler içindeki hiçbir dosyayı taşımak istemiyorsanız, bu komutu kullanın:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
burada -maxdepth
seçenek 1
, yalnızca derinlemesine bulmanın ne kadar denenmesi gerektiğini , yalnızca bulma komutunda belirtilen dizini belirtir. Sen kullanarak deneyebilirsiniz 2
, 3
test etmek de.
Ayrıntılı bir açıklama için Ubuntu find man sayfasına bakın.
-print0 | xargs -0 mv -t ~/Videos
daha verimli bir şekilde yapılabilir -exec mv -t ~/Videos \{\} \+
:-)
mv -v ~/Downloads/* ~/Videos/
Gizli dosyalar için çalışmıyor
mv ~/Downloads/* ~/Videos
İstediğiniz dizindeki alt klasörler dahil tüm dosyaları taşıyacaktır mv
. Eğer isterseniz cp
(kopyalama) ya da rm
ihtiyacınız olacak (kaldırmak) -r
alt klasörleri eklemeyi (özyinelemeli) seçeneğini.
mv
alt klasörleri dahil etmek için özyinelemeli seçeneğe ihtiyaç duymaz. Biri yeniden adlandırmak için de kullanabilir.
Basit bir durum için:
mv ~/Downloads/* ~/Videos
Nokta (gizli) dosyaları da taşımak istiyorsanız, dotglob kabuk seçeneğini ayarlayın.
shopt -s dotglob
mv ~/Downloads/* ~/Videos
Bu, kabuk seçeneği kümesini bırakır.
Bir defa dotglob kullanımı için komutları bir alt kabukta çalıştırın:
(shopt -s dotglob; mv ~/Downloads/* ~/Videos)
(shopt -s dotglob; mv ~/Downloads/* ~/Videos)
yalnızca içeriği (gizli dosyalar dahil) taşır (keser). Bu durumda, hem başlangıç hem de hedef klasörlerin önceden var olması gerekir. Sonunda, başlangıç dizini boşalır.
rsync
Örneğin kullanarak mümkündür :
rsync -vau --remove-source-files src/ dst/
nerede:
-v
,--verbose
: Ayrıntıyı arttır.
-a
,--archive
: Arşiv modu; eşittir-rlptgoD
(hayır-H
,-A
,-X
).
-u
,--update
: Alıcıda daha yeni olan dosyaları atla.
--remove-source-files
Bursync
, gönderen tarafından , aktarımın bir parçası olan ve alıcı tarafa başarıyla kopyalanan dosyaları (dizin olmayan anlamına gelir) kaldırmayı bildirir .
Kök ayrıcalıklarınız varsa, sudo
olası izin sorunlarının üstesinden gelmek için ile öneki ekleyin .
kullanım
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.
İçeriği olan veya olmayan bir dizini tıpkı mv
bir dosyayı yeniden adlandırmak için nasıl kullanacağınız gibi yeni adına taşımak için :
mv -T dir1 dir2
nerede:
-T
hedefe normal bir dosya gibi davranırdir1
dizinin asıl adıdir2
dizinin yeni adıNB: dir2
var olmak zorunda değildir.
Umarım bu birisine çok zaman kazandırır, noob olarak, bundan önce, yeni bir isimle bir dizin oluşturur ve daha sonra dizinin içeriğini daha önce yaratılan dizine taşırdım.
Alt dizinler için kullan
Bu komut, birçok dosya hedef dizininin bir alt klasörüne kaydedildiğinde yararlıdır, yani Downloads/mp4
. Bu örnekte, çalışan alt klasörün kaldırılmasıylamv -T Downloads/mp4 Videos
sonuçlanacak ve içerdiği tüm dosyalar Videolar klasörüne taşınacaktır.mp4
dir1
kaldırılmasına neden olacağını göstermek için bu cevaba bir örnek ekledim . Bu önlemin yanı sıra, bu cevap günlük kullanım için iyi bir şey kaydetti.
mv fileA fileB
ancak -T
bu durumda bayrak hedef / dizini bir dosya olarak kabul eder ve yeniden adlandırır.
cd folderNamehere
pwd
. Bu da taşımak istediğiniz dizini yazdıracaktır.cd folderNamehere
mv *.* typeAnswerFromStep2here
Bu, tüm dosyaları bu dizinden diğerine taşıyacaktır.
foo.txt
, bar.
ve bar
her ikisi de bar.
ve bar
taşınmaz. *
Bunun yerine kullanmak *.*
onunla ilgilenir. Ancak her iki durumda da, gizli dosyalar: .foobar
taşınmaz.
mv source_path/* destination_path/
burada *
kaynak eğik çizgiyi ve kaynak yolundan sonra, kaynak dizinin tamamı yerine source_path içindeki dosyaları alabilmesi için öne sürmeniz gerekir.
Örnek: mv /home/username/test/* /home/username/test2/
Yukarıdaki komut, kaynak dizindeki tüm dosyaları (gizli olmadıkça) hedef dizine taşır.
dene
find ~/Desktop -type f -iname "*.mp4" -exec mv {} ~/Videos \;
-tipi Eğer dizin anlamına vücuda verme kullanarak file.If ortalamasını olan bu ifadeye file.On türünü belirtebilirsiniz tipi bağımsız değişkenle.
-iname: Bir dosyayı aramanın en yaygın ve en açık yöntemi -name argümanını kullanmaktır. Eğer onun büyüklüğünün duyarlılığından emin değilseniz -iname argümanını kullanabilirsiniz.
mv {} ve nihayet hedef dizini belirlemek ve ardından dosyaları mv {} argümanını kullanarak oraya taşımak
files
ama insanlar nasıl sadece geçmenize gösterenfiles
amafolders
aynı zamanda. Bu iyi mi?