Verktyg Visningsval
2012-04-26, 21:13   #1

WeeMaan

Medlem

WeeMaans avatar

Plats: Finland

Registrerad: nov 2003

Kopiera en fil till alla mappar


Skulle behöva kopiera en fil (fil.txt) till alla mappar, i den mappen jag är i.
Finns det något smidigt kommando som gör detta eller måste man laga något script?

Tack
__________________
i7 920 @ 4.4 Ghz - HT On | HD5870 | Vertex SSD | Thermochill 120.4 - Heatkiller 3.0 - EK5870 | Silverstone TJ07
TJ07 WeeMaan Edition :D
WeeMaan är inte uppkopplad
2012-04-26, 21:23   #2

Printscreen

Medlem

Printscreens avatar

Plats: Sundbyberg

Registrerad: jul 2001

Till alla mappar? alltså I varenda mapp i hela "/"? Eller bara alla undermappar?
__________________
i5 3570k @ 4,2GHz med antec 620. 16GB corsair. Asrock Z77 Pro4. GTX 780 @ 1250/ 6300. Dell Ultrasharp 2560x1440. Fractal R4.
Razer Ouroboros. Filco Majestouch 2.
Printscreen är inte uppkopplad Folding
2012-04-26, 21:25   #3

WeeMaan

Medlem

WeeMaans avatar

Plats: Finland

Registrerad: nov 2003

Citat:
Ursprungligen inskrivet av Printscreen Visa inlägg
Till alla mappar? alltså I varenda mapp i hela "/"? Eller bara alla undermappar?
Alltså undermapparna i den mapp jag befinner mig i.
Om jag är i /Home/WeeMaan/ och vill ha en fil till alla mappar i /Home/WeeMaan. OBS Inte undermapparna i dom mapparna.
__________________
i7 920 @ 4.4 Ghz - HT On | HD5870 | Vertex SSD | Thermochill 120.4 - Heatkiller 3.0 - EK5870 | Silverstone TJ07
TJ07 WeeMaan Edition :D
WeeMaan är inte uppkopplad
2012-04-26, 21:29   #4

SkullCruzher<3

Medlem

SkullCruzher<3s avatar

Plats: Växjö

Registrerad: feb 2012

Är nyfiken varför du vill ha det xD ?
__________________
Stationär: GIGABYTE 990fxa-UD3 | AMD FX-8120 @ 4,2GHz, Kyls med: Cooler Master Hyper 412s | 8GB RAM 1600mhz @1866mhz| XFX Radeon HD 6950 2GB Dual Fan | Antec 550w VP550M | 2TB Seagate Barracuda 7200rpm 64mb buffertminne | Cooler Master Elite 430
Laptop(gammal jävel): Packard Bell Easy Note MX51 | AMD Turion X2 TL-56 @ 1,8ghz | 2gb ram (stock 1gb) | Geforce GO 6100 256mb | 149gb hårddisk
SkullCruzher<3 är inte uppkopplad Folding
2012-04-26, 21:36   #5

WeeMaan

Medlem

WeeMaans avatar

Plats: Finland

Registrerad: nov 2003

Citat:
Ursprungligen inskrivet av SkullCruzher<3 Visa inlägg
Är nyfiken varför du vill ha det xD ?
Spara tid. Jobbigt att manuellt skriva i alla hundratals mapp namn.
__________________
i7 920 @ 4.4 Ghz - HT On | HD5870 | Vertex SSD | Thermochill 120.4 - Heatkiller 3.0 - EK5870 | Silverstone TJ07
TJ07 WeeMaan Edition :D
WeeMaan är inte uppkopplad
2012-04-26, 23:24   #6

Debug

Medlem

Debugs avatar

Plats: Göteborg

Registrerad: dec 2010

Oj, jag märker verkligen hur ringrostig man blir om man inte programmerar på ett tag. Jag försökte skriva ett litet skript åt dig i Python, jag har inte testat det då jag inte sitter i Linux så jag föreslår att du testar med en annan fil först.
Använd på egen risk!

import os
import sys
import shutil

try:
    file = sys.argv[1]
except IndexError:
    print "No argument specified."
    sys.exit(1)

dir = os.listdir("./")
for i in dir:
	if os.path.isdir(i) == True:
		shutil.copyfile(file, i)
		
print "Copying done!"
Observera att den inte kopierar rekursivt.
__________________
Osocial, instängd och förbannad.
Debug är inte uppkopplad
2012-04-26, 23:53   #7

WeeMaan

Medlem

WeeMaans avatar

Plats: Finland

Registrerad: nov 2003

Citat:
Ursprungligen inskrivet av Debug Visa inlägg
Oj, jag märker verkligen hur ringrostig man blir om man inte programmerar på ett tag. Jag försökte skriva ett litet skript åt dig i Python, jag har inte testat det då jag inte sitter i Linux så jag föreslår att du testar med en annan fil först.
Använd på egen risk!

import os
import sys
import shutil

try:
    file = sys.argv[1]
except IndexError:
    print "No argument specified."
    sys.exit(1)

dir = os.listdir("./")
for i in dir:
	if os.path.isdir(i) == True:
		shutil.copyfile(file, i)
		
print "Copying done!"
Observera att den inte kopierar rekursivt.
Traceback (most recent call last):
  File "script.py", line 14, in <module>
    shutil.copyfile(file, i)
  File "/usr/lib/python2.7/shutil.py", line 83, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 21] Is a directory: 'test3'
Filnamnet var "test", fanns 3 mappar; "test1", "test2" och "test3".
__________________
i7 920 @ 4.4 Ghz - HT On | HD5870 | Vertex SSD | Thermochill 120.4 - Heatkiller 3.0 - EK5870 | Silverstone TJ07
TJ07 WeeMaan Edition :D
WeeMaan är inte uppkopplad
2012-04-27, 01:42   #8

Zevon

Medlem

Zevons avatar

Plats: Umeå

Registrerad: mar 2002

En for-loop i bash är väl det triviala sättet (du kan skriva det direkt i terminalen, du behöver inte skapa ett skript):
for i in */; do cp fil.txt "$i"; done
Ovan kopierar dock endast filen till synliga mappar (mappar vars namn inte börjar med en punkt)..

Annars så går det väl också att lösa med find, den här kopierar filen till samtliga (både synliga och dolda) mappar:
find . -maxdepth 1 -type d ! -name "." -exec cp fil.txt "{}"/ \;
__________________
The difference between stupidity and genius - the latter has limits
Zevon är inte uppkopplad
2012-04-27, 07:53   #9

phz114n

Moderator

phz114ns avatar

Plats: Göteborg

Registrerad: okt 2002

Citat:
Ursprungligen inskrivet av Zevon Visa inlägg
Annars så går det väl också att lösa med find, den här kopierar filen till samtliga (både synliga och dolda) mappar:
find . -maxdepth 1 -type d ! -name "." -exec cp fil.txt "{}"/ \;
Adderas "-mindepth 1" så kan man ta bort anti-matchningen för -name ".".

För att undvika dolda mappar så kan man byta mönstret som används i -name mot '.*' (alltså ' istf " för att undvika att skalet expanderar asterisken).

{} sköter all escaping själv, så citationstecken behövs inte (eller sista "/":en).

--

Som sagt, är det bara en nivå med mappar så är Zevons shellskript det bästa. Om det blir något mer avancerat så är find enligt ovan troligen smidigare att enkelt modifiera.

Det går lätt att få med gömda mappar i Bashscriptet om man vill det genom att sätta "shopt -s dotglob" innan skriptet körs.
phz114n är inte uppkopplad
2012-04-27, 09:30   #10

WeeMaan

Medlem

WeeMaans avatar

Plats: Finland

Registrerad: nov 2003

Citat:
Ursprungligen inskrivet av Zevon Visa inlägg
En for-loop i bash är väl det triviala sättet (du kan skriva det direkt i terminalen, du behöver inte skapa ett skript):
for i in */; do cp fil.txt "$i"; done
Ovan kopierar dock endast filen till synliga mappar (mappar vars namn inte börjar med en punkt)..

Annars så går det väl också att lösa med find, den här kopierar filen till samtliga (både synliga och dolda) mappar:
find . -maxdepth 1 -type d ! -name "." -exec cp fil.txt "{}"/ \;
Citat:
Ursprungligen inskrivet av phz114n Visa inlägg
Adderas "-mindepth 1" så kan man ta bort anti-matchningen för -name ".".

För att undvika dolda mappar så kan man byta mönstret som används i -name mot '.*' (alltså ' istf " för att undvika att skalet expanderar asterisken).

{} sköter all escaping själv, så citationstecken behövs inte (eller sista "/":en).

--

Som sagt, är det bara en nivå med mappar så är Zevons shellskript det bästa. Om det blir något mer avancerat så är find enligt ovan troligen smidigare att enkelt modifiera.

Det går lätt att få med gömda mappar i Bashscriptet om man vill det genom att sätta "shopt -s dotglob" innan skriptet körs.
Detta fungerade bra, tack för hjälpen!

for i in */; do cp testfil1 testfil2 "$i"; done
__________________
i7 920 @ 4.4 Ghz - HT On | HD5870 | Vertex SSD | Thermochill 120.4 - Heatkiller 3.0 - EK5870 | Silverstone TJ07
TJ07 WeeMaan Edition :D
WeeMaan är inte uppkopplad
2012-04-29, 13:27   #11

fagerja

Medlem

fagerjas avatar

Plats: Funchal, Portugal

Registrerad: nov 2005

Varför inte använda mjuka länkar?
__________________
Fagerja
fagerja är inte uppkopplad
2012-04-29, 15:14   #12

phz114n

Moderator

phz114ns avatar

Plats: Göteborg

Registrerad: okt 2002

Citat:
Ursprungligen inskrivet av WeeMaan Visa inlägg
Spara tid. Jobbigt att manuellt skriva i alla hundratals mapp namn.
Frågan var snarare: "Varför vill du kopiera samma fil till hundratals mappar?", vilket fortfarande är rätt oklart :-)
phz114n är inte uppkopplad
Senaste nyheterna

Redaktionens senaste nyhetsrubriker