Vraag mv: Directory is niet leeg


Ik wil de inhoud van een map binnen een andere map verplaatsen met dezelfde mappen.

Hier is een voorbeeld:

ik heb ./backup met de mappen base en test. Nu wil ik deze mappen verplaatsen ./backupArchives.

Ik gebruik dit:

mv ./backup/* ./backupArchives

maar ik kreeg de fout

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

Ik probeerde het te gebruiken --forcemaar geen geluk. Is er een manier om het te verplaatsen wanneer mappen al bestaan?

Opmerking: ik wil gewoon inhoud samenvoegen, er is geen overschrijving.


124
2018-03-19 04:11


oorsprong


Probeer je de inhoud van de mappen gewoon in de bestemming samen te voegen, of probeer je te overschrijven wat in de bestemming is. (het helpt ook als je de HELE fout hebt, zonder ... te gebruiken om gegevens af te korten) - Thomas Ward♦
Ik wil gewoon de inhoud samenvoegen, er is geen overschrijving. - UdK
@UdK Zelfs als dit zou werken, merk op dat dit zou doen niet voeg de inhoud van de twee mappen samen. Het verplaatsen van een map zal zijn doel vervangen. Kijk even naar rsync in plaats daarvan wordt de samenvoeging uitgevoerd. - zwets


antwoorden:


Hoewel de man-pagina het niet documenteert, mv zal weigeren om een ​​map naar een andere map te hernoemen als de doelmap bestanden bevat. Dit is een goede zaak in jouw geval omdat je het wilt willen samensmelten de inhoud van de bron in het doelwit, die mv zal niet doen.

Gebruik rsync -a backup/ backupArchives/ in plaats daarvan. Daarna rm -rf backup/*.

In plaats van gebruiken rsync, je kunt ook het klassieke doen

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

waarmee je meer nuk punten verdient.


159
2018-03-19 07:51



leuke dingen om te weten! Beide werken geweldig. Bedankt! - UdK
Geek-punten zijn de beste punten: D - MadMike
Opgemerkt moet worden dat dit vereist dat je de grootte van de map in de vrije ruimte hebt. En zal vreselijke problemen veroorzaken als dat niet het geval is. - Pogrindis
@Pogrindis Leg alsjeblieft uit wat verschrikkelijk problemen zullen optreden, en hoe ze verschillen van elke andere poging om naar een volledige schijf te schrijven? Inderdaad, omdat beide bewerkingen de oorspronkelijke directory intact houden, als de bewerking eenvoudig mislukt rm -rf backupArchives zonder gevolgen, laat staan ​​'vreselijke'. - zwets
Bedankt voor het benoemen van de klassieke aanpak, erg handig als rsync niet beschikbaar is! Werkt ook met sudo gebruiken sudo sh -c '(cd backup && tar c .) | (cd backupArchives && tar xf -)' - ArendE


Snel en vies, als je weet wat je doet:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

24
2017-10-10 16:07



Werkt ook in mijn veilige modus, geniaal. - Banned_User


Na de map die u verplaatst, hebt u nodig * (staat voor elke tekst of nummer). Bijvoorbeeld:

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

dat is alles, als je bestanden verplaatst, verplaats je dan als:

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

Een andere manier is om die mapinhoud in te pakken met tar:

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

Verplaats het vervolgens naar een ander bestand. Ook raad ik deze stap aan omdat tar deze comprimeert en kleiner maakt.

Gebruik de bestanden om de bestanden naar een andere map uit te pakken

tar -xvzpf /var/www/

Als u wilt kopiëren naar een locatie waarvan u niet de eigenaar bent, moet u uw opdracht voorafvoegen met de sudo commando na elke optie die je wilt gebruiken.

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

3
2018-03-19 04:27



Ik gebruik Ubuntu 12.10 en ik heb: mv: ongeldige optie - 'R' Probeer `mv --help 'voor meer informatie. Inderdaad .tar is leuk, maar ik moet weten hoe ik mijn bestanden kan verplaatsen voor deze situatie. Bedankt voor je hulp - UdK
ik gebruik 12.04 desktop en server en beide werken goed. wees voorzichtig, als je geen ruimte hebt gemaakt tussen folfer en -R. ik heb ook geprobeerd zonder -R werkt op dezelfde manier voor mij, probeer zonder -R, maar wees voorzichtig met spelling: linux doet ertoe en hoofdletters !!! dan als het pad incorect is movingin of movingfrom locatie. als je die map niet hebt die je wana verplaatst om er gewoon achteraan te zetten en het zal het maken. probeer ook eerst: vind -iname naam van uw map  en voer dit commando uit vanuit root, gewoon om te zien of het op een andere plaats bestaat als je iets spelt mist. geef me een exacte opdracht die je hebt gebruikt - Dimitris Theodoridis
wat thaaa ..... zet die bestandsnaam tussendoor ** - Dimitris Theodoridis
Dat -R zou zeker niet na het eerste argument moeten komen. Opties gaan (bijna) altijd vooraf aan de opdrachtargumenten. Ook, mv heeft geen -R optie en ten slotte is recursie niet relevant voor a mv. @DimitrisTheodoridis test eerst je antwoord. - zwets
ja mijn bro heb je gelijk, ik heb altijd problemen met mijn spelling, en altijd heb ik een probleem met terminal voor dat of commando niet gevonden of maak nieuwe bestanden en mappen die ik niet ken, alleen voor bas spelling ... trouwens ik gebruikte cp-commando, dan hier schreef mv sory voor die bro: D - Dimitris Theodoridis


Zeker rsync werkt, maar dit kan ook werken voor een machine die niet ondersteunt rsync (d.w.z. in cpanel, welke rsync niet standaard is geïnstalleerd).

Hoe zit het met het gebruik van:

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

Verwijder vervolgens de backup directory indien nodig

Opmerking 1: dat moet cd naar de backup directory voordat u de cp -R --parents ... 

Opmerking 2: controleer de dubbele backupArchives map als u de nieuwe bestanden hebt gekregen van de back-up.


3
2018-03-03 07:45





Laten we, voordat we de vraag stellen, een vereenvoudigde zaak overwegen.

Stel dat we in / home / admin twee mappen hebben foo en bar die dezelfde submapstructuur hebben, maar elk bevat verschillende bestanden erin. Nu willen we ze samenvoegen tot één. Wanneer we dingen doen zoals mv foo/* bar, de fout mv: directory not empty optreedt.

Mijn oplossing is om opdrachtregelprogramma's op te geven en over te schakelen naar een GUI-bestandsbeheerprogramma, bijvoorbeeld dolphin. Wanneer je de naam verandert foo naar bar in dolfijn geeft het je de mogelijkheid om in de doelmap te schrijven, en vraagt ​​je of je bestaande bestanden interactief wilt overschrijven. Dit voorkomt kopiëren en verwijderen, wat in feite uw tijd bespaart zonder een enkele regel code.

PS: ik heb niet elke bestandsbeheerder getest die er is. Maar de meesten van hen zouden deze functie moeten hebben.


1
2017-10-12 09:22