“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.