“Mv *” yaptığımda ne oldu? Hata gösterilmedi ve artık yalnızca bir klasör kaldı. Neden?


12

Yürütülen komut, 14 GB veri içeren bir klasörde "mv space *" idi.

mv *

du -hs 

Aynı şey 14 GB veri nereye gitti? Ben ne yaptım?


Daha fazla bilgi gerekiyor. Hangi platform?
Jarmund

4
@Jarmund Bahsedilen her iki komutun Unix benzeri sistemlerde ortak komutlar olduğu göz önüne alındığında bazı * nix varsaymak güvenli olduğunu düşünüyorum. Bu bakımdan, çoğu merminin aynı şekilde çalıştığını söylemek güvenli. Bu nedenle, platform açıkça belirtilmese bile, yararlı bir cevap verecek kadar çıkartabiliriz.
bir CVn


Bahsetmek için başka bir tuzak. Güvenilmeyen veriler üzerinde ASLA mvveya cp" " kullanmamalısınız. Çünkü " " genişler ve "--verbose" gibi adlara sahip dosyalar komut satırı bağımsız değişkenleri alır. Bunun yerine ne kullanılır:cp ./* anotherFolder
VasyaNovikov

Yanıtlar:


31

Benim tahminim, bash joker karakteri genişletir ve böylece her klasörü sonuncuya taşır.

Örneğin:

$ ls
test1  test2  test3  test4

$ mv *

$ ls
test4

$ ls test4
test1  test2  test3

Burada, formata karşılık gelecek şekilde mv *genişletilir . Böylece, her klasör bir son klasöre taşınır.mv test1 test2 test3 test4mv [OPTION]... SOURCE... DIRECTORY


9
Bu. Bu arada, *bir mv(veya cp) kullanmak istiyorsanız , --target-directoryanahtarlarına bir göz atın . Bu gibi şeylerle ısırılmamanızı sağlar.
bir CVn

2

@Ssssteffff tarafından açıklandığı gibi mv *, kabuk geçerli dizindeki dosyalardan joker karakter genişletmesi yapıyor. Ancak mvkomutun davranışı kaç argümanın *genişlediğine bağlıdır . İkiden fazla bağımsız değişken varsa, son bağımsız değişken bir dizin olmalıdır:

   mv [OPTION]... SOURCE... DIRECTORY

Yani,

5 dosya oluşturdum

$ touch 1 2 3 4 5
$ ls
1  2  3  4  5
$ mv *
mv: target ‘5’ is not a directory
$ ls
1  2  3  4  5

Şimdi joker kart genişletme için son parametre olarak gelen bir dizin oluşturursam, o zaman:

$ mkdir 6
$ mv *
$ ls
6
$ ls 6
1  2  3  4  5

Son argümanın ne olduğunu iki kez kontrol etmelisin.

  • Son argüman bir dizinse, verileriniz belki de güvenlidir.
  • Toplam bağımsız değişken sayısı 2 ise ve son bağımsız değişken bir dizinse, verileriniz de güvende olabilir.
  • Toplam bağımsız değişken sayısı 2 ise ve son bağımsız değişken bir dosyaysa, ikinci dosya kesin olarak gider.

Hatayı böyle bir şey görmediğinizden emin misiniz?

 mv: target ‘5’ is not a directory`
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.