Klasörde bir sürü klasör var A
. Tüm bu klasörlerdeki dosyaları taşımak istiyorum A
.
Veya
Tüm dosyaları alt klasörlerden kesip üst klasöre yapıştırmak istiyorum.
Bu nasıl yapılır?
mv */* .
dosyaları alt klasörlerin alt klasöründen taşımaz.
Klasörde bir sürü klasör var A
. Tüm bu klasörlerdeki dosyaları taşımak istiyorum A
.
Veya
Tüm dosyaları alt klasörlerden kesip üst klasöre yapıştırmak istiyorum.
Bu nasıl yapılır?
mv */* .
dosyaları alt klasörlerin alt klasöründen taşımaz.
Yanıtlar:
A
Dizine git ve koş
find . -mindepth 2 -type f -print -exec mv {} . \;
bu, "bu dizindeki ve alt dizinlerindeki tüm dosyaları bul ve hedef dizine sahip mv'yi çalıştır" anlamına gelir.
find
biraz daha şık olabilir ve mv
her dosya için bir işlem ortaya find A -mindepth 2 -type f -exec mv -t A \{\} +
find . -mindepth 2 -type f -print -exec mv --backup=numbered {} . \;
Bir dosya oluşturabilir ve "cutme" olarak adlandırabilirsiniz (terminal türünde cutme adlı bir dosya oluşturmak için nano cutme
. Kaydetmek için CTRL + X tuşlarına basıp ENTER tuşuna basın.) Örneğin aşağıdakileri yapıştırarak şunları yapıştırın:
find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;
Satır içindeki adı cutme unutmayın . Çalıştıracağınız komut dosyası ile aynı olmalıdır.
Dosyayı oluşturduktan ve yukarıdaki satırı yapıştırdıktan sonra, aşağıdakileri komut dosyasıyla aynı klasörde çalıştırın:
chmod +x cutme
. Bunu böyle yürütebileceği şekilde bu "Çalıştırılabilir" bayrak Yeni dosyanızı verecektir: ./cutme
.
mv */* .
mi?