Yanıtlar:
'Myfolder' adı verilen klasör ve dosya hiyerarşisinde bir seviye üste (koymak istediğiniz nokta) komut aşağıdaki gibi olacaktır:
mv myfolder/* .
Yani, örneğin veri olsaydı /home/myuser/myfolder
den sonra /home/myuser/
komutunu çalıştırın.
.*
. Orijinal klasörü kaldırmak hem önemsizdir hem de istenmez, bu yüzden OP'nin kendisiyle başa çıkmasına izin vereceğiz.
*
ve .*
tek satırda? sadece merak
mv
tümü, taşınması için hedef olması gereken LAST argümanı dışındaki kaynaklar olacaktır (ve birden fazla kaynak olması durumunda, bir klasör olması gerekir).
/bin/mv: Argument list too long
Sadece bunu netleştirmek için, Rudu'nun yukarıdaki cevabından ve yorumlarından alınmıştır.
Tüm içeriği taşımanız gerekirse, a ile başlayan dosyaları DAHİL. (.htaccess, .git, vb gibi) komutunuza hem * hem de * eklemeniz gerekir. Bunun gibi:
mv subfolder/* subfolder/.* .
Bu alt klasörün içeriğini geçerli klasörünüze taşıyacaktır. Son "." Den önceki boşluğu not edin.
mv: rename fake/. to ./.: Invalid argument
vemv: rename fake/.. to ./..: Invalid argument
Bu, aşağıdaki yöntemlerle mümkündür:
Kullanarak rsync
:
rsync -vua --delete-after foo/ .
Kullanılması cp
ve rmdir
:
cp -vaR foo/. . && rmdir foo/
Kullanarak mv
( dotglob
seçenek etkinken):
shopt -s dotglob # Includes filenames beginning with a dot.
mv -- foo/* . # Where foo/ is the folder consisting the files.
shopt -u dotglob # Disables previously enabled dotglob option.
foo/
İçeriği bir seviye yukarı taşınacak klasörün nerede ?
Bakınız: help shopt
ve man bash
.
Kullanarak mv
( burada önerildiği gibi ):
mv foo/* foo/.[^.]* . && rmdir foo/
Not: adlı bir dosyayı özleyecektir foo/..bar..
.
Not: POSIX mermileri için ihtiyacınız vardır [!.]
.
-v
, -u
, -a
ve -r
yapıyor? AFAICT, -v
sadece rsync daha fazla bilgi yazdırmak yapar, ayrıntılı. -u
güncelleme anlamına gelir - bir dosyayı yalnızca yeniyse kopyalayın. Bu alakalı görünmüyor. -a
arşiv anlamına gelir. Bu dosyanın sahibini ve izinlerini kopyalar ve senkronizasyonu özyinelemeye getirir. -r
özyinelemeli anlamına gelir, ancak bu zaten tarafından kaplı -a
.
-u
Zaten var olan (özellikle yavaş depolama aygıtları için) fazladan veri taşımak için zaman harcamak istemiyorsanız faydalıdır. Söylediğim gibi -r
kaplandığı için kaldırdım -a
.
mv foo/* foo/.[^.]* .
foo/..bar..
örneğin bir dosyayı özleyecekti . POSIX mermileri için ihtiyacınız olduğunu unutmayın [!.]
.
rsync -vua --delete-after foo/ .
Geçerli dizinde zaten var olabilecek her şeyi sildiği belirtilmelidir .
sadece bir mv komutu verin
mv (directory)/* .
dizini silmek istiyorsanız ekleyin.
rm -rf (directory)
(Dizinin) üst dizininde olduğunuzu varsayalım
Eğer (dizin) içerisindeyseniz, o zaman
mv * ../
rmdir
olması, dizinin boş olmaması durumunda şikayet eder ve çıkar rm -r
. (Bu bir poka-boyunduruğu değildir .)
.DS_store
olduğu gibi gizli dosyaların varlığı olabilir . Yukarıdaki mv
komut bunları ( dotglob
ayarlanmamış) hareket ettirmez .
paylaşılan bir sunucudakiler için bu şekilde bir şeyler kullanmak zorunda kalacaksınız.
Dosyaları taşımak için
mv -v ~/public_html/public_html/* ~/public_html/
Dosyaları kopyalamak için
cp -a ~/public_html/public_html/* ~/public_html/
.*
sadece*
nokta dosyaları içeriyorsa da eşleşmeniz gerekebilir . Ayrıca şimdi harici klasörü kaldırmak için sonuna & & rmdir myfolder `ı ekleyin. Bu, yalnızca mv başarılı olursa döner ve Rmdir boş olmayan bir dizini kaldırmadığı için çalışacağından dolayı tasarruftur.