mv: Adresář není prázdný

124

Chci přesunout obsah adresáře do jiného adresáře se stejnými adresáři.

Zde je příklad:

Mám./backup, které mají adresářebase atest. Nyní chci přesunout tyto adresáře v./backupArchives.

Používám toto:

mv ./backup/* ./backupArchives

ale mám chybu

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

Pokusil (a) jsem se používat--force, ale ne štěstí. Existuje způsob, jak ji přesunout, když složky již existují?

Poznámka: Chci jen sloučit obsah, neexistuje přepsání.

    
dané UdK 19.03.2013 05:11

5 odpovědí

159

Ačkoli jeho manuálová stránka to neukládá,mv odmítne přejmenovat adresář na jiný adresář, pokud cílový adresář obsahuje soubory. V tomto případě je to dobrá věc, protože chcete, aby sloučil obsah zdroje do cíle, kterýmv nebude dělat.

Místo toho použijtersync -a backup/ backupArchives/. Po tomtorm -rf backup/*.

Namísto použitírsync můžete také dělat klasické

(cd backup && tar c .) | (cd backupArchives && tar xf -)

, čímž získáte více geeků.

    
odpověděl zwets 19.03.2013 08:51
24

Rychle a špinavě, pokud víte, co děláte:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*
    
odpověděl patrickvacek 10.10.2013 18:07
3

Po přesunutí adresáře potřebujete* (představuje libovolný text nebo číslo). Například:

mv /var/www/* /recovery/wwwrecovery/

To vše, pokud se pohybujete soubory, než se pohybujete jako:

mv /var/www/index.php /recovery/index.php

Dalším způsobem je zabalit obsah složky pomocí tar:

tar -cvzpf backup.tar.gz /var/www 

Pak přemístit jiný soubor. Také doporučuji tento krok, protože tar ho komprimuje a zmenšuje jeho velikost.

Chcete-li soubory extrahovat do jiné složky, použijte

tar -xvzpf /var/www/

Pokud potřebujete zkopírovat na místo, které nevlastníte, ujistěte se, že předem nastavíte příkaz příkazemsudo, a to podle libovolné možnosti, kterou se rozhodnete použít.

sudo tar -cvzpf backup.tar.gz /var/www/
    
odpověděl Dimitris Theodoridis 19.03.2013 05:27
3

Jistěrsync funguje, ale to může fungovat i pro stroj, který nepodporujersync (tj. v cpaneli, který rsync není ve výchozím nastavení nainstalován).

A co používat:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

Pokud je to nutné, odstraňte adresářbackup

Poznámka1: Potřebujetecd do adresářebackup před spuštěnímcp -R --parents ...

Poznámka2: Pokud jste získali nové soubory ze zálohy, zkontrolujte dvakrát složkubackupArchives

    
odpověděl Atillo Regner Rex 03.03.2017 08:45
1

Předtím než položíme otázku, zvážíme zjednodušený případ.

Předpokládejme, že v / home / admin máme dva složkyfoo abar, které mají stejnou strukturu podadresářů, ale každá z nich obsahuje různé soubory. Nyní je chceme spojit do jednoho. Když děláme věci jakomv foo/* bar, dojde k chyběmv: directory not empty.

Mým řešením je vzdát se nástrojů příkazové řádky a přepnout na správce souborů GUI, například delfín. Při přejmenovánífoo nabar v dolphin vám dává možnost zapsat do cílové složky a zeptá se, zda chcete přepsat existující soubory interaktivně. Tím se zabrání kopírování a mazání, což šetří váš čas bez jediného řádku kódu.

PS: Netestoval jsem všechny správce souborů tam. Ale většina z nich by měla mít tuto vlastnost.

    
odpověděl navigaid 12.10.2016 11:22