Dosyaları ve dizinleri Linux'taki ana klasöre nasıl taşırım?


Yanıtlar:


66
Bul -maks. 1 -exec mv {} .. \;

Bu gizli dosyaları da taşıyacaktır.

Mesajı alacaksınız:

mv: hareket edemiyor. ila ../. ': Cihaz veya kaynak meşgul

Hareket etmeye çalıştığında .(geçerli dizin) ancak bu herhangi bir zarara neden olmaz.


1
Tüm alt dizinlerdeki tüm dosyaları da geçerli dizinin üst kısmına taşıyacaktır. Bana kalırsa doğru -maxdepth 1emin olmak için.
17'de

1
Şimdi diyor ki: mv: hareket ./scripts' to edemez ../scripts ': Dizin boş değil

1
Üst dizininizde VE geçerli dizininizde komut dosyaları adında bir dizininiz olmalıdır. Taşımadan önce bunu yeniden adlandırmanız gerekecek.
17'de

1
İşe yaradı ama çok önemli bir bilgi bıraktınız - bunu alt dizinden çalıştırmalısınız. Ayrıca bu, alt dizinin kendisini silmez, bu nedenle bir dizini yedeklemeli ve alt dizinde bir rmdir yapmalısınız.
zanaatkar

89

Buraya geldim çünkü bu konuda da yeniyim. Nedense yukarıdakiler benim için hile yapmadı. Tüm dosyaları bir dizinden üst dizinine taşımak için yaptığım şey:

cd to/the/dir
mv * ../

12
Bu gizli dosya olsa bile hareket etmiyor
Wavesailor

1 liner:(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
Dawid Drozd

10

Bunu kabuğa yazın:

mv *.* ..

Bu TÜM dosyaları bir seviye yukarı taşır.

Karakter *bir jokerdir. Böylece *.debtüm .deb dosyaları Zeitgeist.*taşınacak ve Zeitgeist.avi ve Zeitgeist.srt dosyalarından birini yukarı taşıyacaksınız, çünkü elbette ..ana dizini gösterir.

Vs klasörler dahil her şeyi taşımak için, sadece kullanmak *yerine*.*


3
Bu dirs ile işe yaramadı! veya gizli dosyalar

En azından benim için dirs ile çalışır.
maaartinus

5
Sen istemek *değil *.*dizinleri dahil etmek
Chris S

Güzel bir belgesel
BlackBurn027

6

Şundan daha basit olamaz:

mv * ../

Gizli dosyaları da taşımak için:

mv /path/subfolder/{.,}* /path/ 

mvdosyaları taşımak için kullanılan bir komuttur, *tüm dosyalar ve klasörler anlamına gelir ../ve ana dizine giden yoldur.


2

Bash'da tüm dosyaları eşleştirmek ve basitçe hareket ettirmek için shopt -s dotglob komutunu kullanabilirsiniz .

shopt -s dotglob; mv * ..

Bu en iyi çözüm değildir, çünkü siz değiştirene kadar ayar kabuk için kalıcıdır.

shopt -u dotglob

ama bence bilmek güzel.


4
Bir kabuktaki diyelim: (shopt -s dotglob && mv * ..). Bu şekilde, seçenek yalnızca bu alt kabuk için yereldir.
Martin Ueding

İyi cevap - basittir, gizli dosyalar içerir ve '.' ve '..'
Daniel Howard,

1

Hataya neden olmayan ve her seferinde çalışan bir yöntem:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done

1
find . -maxdepth 2 -type f -exec mv {} .. \;

Tüm dosyaları alt klasörlerden üst öğeye taşımak için yukarıdaki bir varyasyonu kullandım.

Klasörlerdeki yıla göre veri aldım, ancak meta verileri kullanarak hepsini aynı klasörde bulabilirdim, bu da yönetilmelerini kolaylaştırdı.

Örneğin.

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3

0

Tüm gizli dosyalarınızın nokta, ardından bir harf veya bir sayı (olması gereken) ile başlayacağını varsayalım

mv * .[A-Za-z0-9]* ..

İşin bir .[A-Za-z0-9]*kısmı, hareket etmeye .ya da ..ilerlemeye çalışmadığınızdan emin olmak , ki bu başarısız olacaktır.


0

Tüm dosya ve klasörleri Linux'ta ana dizine taşımak kolaydır.

Bu klasöre gidin ve bu komutu kullanın:

mv * /the full path

Örneğin, dosyalarınız ve klasörleriniz aşağıdaki gibidir:

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

Bu klasöre cd ile gidin:

cd /home/abcuser/test
mv * /home/abcuser

Tüm dosya ve klasörleriniz abcuser klasörüne (ana dizin) taşınır.


2
Teşekkürler @Gareth, neredeyse aynıydı. Abhishek, lütfen ilgisiz bağlantılar kurma, bunun anlamı nedir? Ayrıca, lütfen biçimlendirmenizi kontrol edin. Ayrıca /the full pathLinux'ta çalışmıyorsa, boşluklardan kaçmak zorundasınız /the\ full\ path.
slhck


0
find -type f|while read line; do mv $line ${line##*/}; done

Bir cevaba katkıda bulunduğunuz için teşekkür ederiz. Bu basit senaryolarda işe yarayabilecek olsa da, boru findiçine while readkullanmak için kötü bir yoldur findve daha iyi cevaplar önceden gönderilmiş.
Scott,

-1

Alt dizine geçin ve dosyaları kopyalamak veya taşımak için aşağıdaki komutu uygulayın.

Örn: a, ana dizin ve b, alt dizindir, tüm dosyaları b'den a'ya (alt dizinine ana dizine) taşımak / kopyalamak istiyoruz.

cd b
cp * ..
mv * ..

Süper Kullanıcıya Hoşgeldiniz! Bu, başka bir yanıtı çoğaltır ve yeni bir içerik eklemez. Gerçekten katkıda bulunacak yeni bir şeyiniz yoksa lütfen cevap yazmayın.
DavidPostill
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.