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.