mv vraagje

Hoi,

Ik heb een script waarin ik een directory wil verplaatsen en hernoemen.

dus voor:

/usr/local/foo/

en na:

/Users/koen/bar/

De directory ‘foo’ bevat ook weer een paar directories, dus het volgende werkt goed:

mv /usr/local/foo/dir1 /Users/koen/bar
mv /usr/local/foo/dir2 /Users/koen/bar
mv /usr/local/foo/dir3 /Users/koen/bar
etc

Omdat ik niet weet hoeveel directories in foo zitten, doe ik het liever met een commando, maar dan gaat het fout:

mv /usr/local/foo /Users/koen/bar

geeft:

/Users/koen/bar/foo

Ik heb ook mv /usr/local/foo/. /Users/koen/bar geprobeerd, maar dan krijg ik een foutmelding om dat . geen directory is.

Is het mogelijk om het met een commando te doen?

bedankt,

  • Koen.

ben niet zeker maar probeer eens recursief

-R dus…

man mv

cp -r /f00 /bar

Als ik jou was zou ik ‘cp’ gebruiken… ‘mv’ is evillll …

$ cd /usr/local/foo/ $ tar cf - . | ( cd /User/koen/bar; tar xvf -)

$ cd /usr/local/foo/ $ tar cf - . | ( cd /User/koen/bar; tar xvf -); cd /usr/local/foo/; rm -rf .

[quote:1315048465="koen"]Ik heb ook mv /usr/local/foo/*.* /Users/koen/bar geprobeerd, maar dan krijg ik een foutmelding om dat *.* geen directory is.

Is het mogelijk om het met een commando te doen?[/quote:1315048465]

wat dacht je van: [b:1315048465]mv /usr/local/foo/* /Users/koen/bar/[/b:1315048465] ?

. zou werken, als alle files en directories een extentie hadden. Dit is onder Unix niet altijd het geval (eigenlijk meer niet dan wel).

Het kan trouwens ook zijn, dat je [i:1315048465]hidden[/i:1315048465] files in /usr/local/foo/ hebt. Dit zijn files die beginnen met een punt. In dat geval zou je het volgende commando kunnen uitvoeren: [b:1315048465]mv /usr/local/foo/{,.} /Users/koen/bar/[/b:1315048465].

De brackets {} [i:1315048465]expanden[/i:1315048465] de commandline. Dus in het laatste voorbeeld is hetzelfde als: [b:1315048465]mv /usr/local/foo/* /usr/local/foo/.* /Users/koen/bar/[/b:1315048465].

[quote:59208e9140="inod3"]cp -r /f00 /bar

Als ik jou was zou ik ‘cp’ gebruiken… ‘mv’ is evillll …[/quote:59208e9140]

Als je een alternatief geeft, doe het dan wel goed, want in je voorbeeld wordt het behoud van mod- en access time, modi en permissions niet gegarandeerd (iets wat mv wel doet, als de move in de eerste plaats niet belemmerd wordt door permissies).

Hoewel de -p flag van cp nog steeds geen garantie geeft voor behoud van het bovengenoemde, probeert het dat wel te benaderen. Maar in dit geval zou ik ‘cp’ een stuk ‘more evil’ willen noemen dan ‘mv’.

Dan nog zou ik 'cp' boven 'mv' prefereren. Gewoon tar gebruiken met premissie behoud (-p).

man mv
man cp
man tar

Bedankt voor de reacties - zo te lezen is het ingewikkelder dan ik had gedacht :). Er zitten trouwens geen onzichtbare bestanden in foo, en ik voer het script uit als sudo. Ik ga vanavond eea uitproberen en laat hier weten hoe het ging. Het laatste voorbeeld op deze pagina doet volgens mij trouwens wat ik probeer te doen: http://www.mcsr.olemiss.edu/unixhelp/tasks/mv2.html.

  • Koen.

Aha, gevonden :)

Het ging fout omdat /Users/koen/bar al bestond.

  • Koen.

Ik ben bezig met een backup oplossing te maken mbv tar, maar bij het terugzetten zijn de resource gegevens weg...

Nu werkt Mac OS X wel heel goed met extenties, maar sommige gebruikers nog niet :oops:

Is er een mogelijkheid om tar te gebruiken met behoud van de extra informatie (resource fork)?

Misschien bedoel je '-p' ?

anders:

man tar

-p neemt alleen alle Unix informatie mee :(

Ik begin te denken dat tar niet is aangepast voor de resourceforks… BTW: de man pagina’s in Mac OS X lopen ver achter op de standaard tools… oftewel: de man tar geeft geen volledig beeld van tar.

Heeft iemand een oplossing?

Voor Copy en Move bestaan aparte commando's die de resource fork meenemen, deze staan op de Developper tools CD.

Dus ipv : [code:1:b2e1157391]cp /Users/gebruiker/Desktop/test /Users/gebruiker/[/code:1:b2e1157391]
Doe je : [code:1:b2e1157391]CpMac /Users/gebruiker/Desktop/test /Users/gebruiker/[/code:1:b2e1157391]

Is er ook iets voor tar, bijvoorbeeld TarMac?

via [code:1:a14bad09ec]ditto[/code:1:a14bad09ec] zijn bestanden incl resourefork te verplaatsen. Ik heb er alleen geen enkele ervaring mee.

ditto is goed, met behoud van privileges en resources!

De tool van Bombich (carbon copy cloner) maakt hier gebruik van.
Ik gebruik het zelf op eenzelfde manier om diskimages te maken die ik kan gebruiken om een netrestore te doen.