Hvordan kopierer jeg en grafikfil til alle mapper og undermapper i et hierarki?
Jeg går ud fra det det skal strikkes sammen i Terminal?
Måske kan du gøre det ved at lave et AppleScript.
Jeg har aldrig rigtig rodet med det, men AppleScript til visse rutiner foreslås af og til af hajerne herinde.
https://askubuntu.com/questions/300744/copy-the-content-file-to-all-subdirectory-in-a-directory-using-terminal
Mine mapper ligger her: /Users/kh/Walton. I Walton ligger "covers.jpg", som jeg ønsker kopieret ind i alle undermapper.
Jeg har prøvet mange forskellige varianter af find <target-dir> -type d -exec cp <the file> {} \;, men jeg får hele tiden at vide, at mappen eller filen ikke findes.
Har også prøvet denne:
for i in ./* # iterate over all files in current dir
do
if [ -d "$i" ] # if it's a directory
then
cp cover.jpg "$i" # copy cover.jpg into it
fi
done
- men filen bliver IKKE kopieret til undermapperne.
Towie, jeg mener at have læst et sted, at man kan "optage" sit AppleScript, altså starte AppleScript-optagelsen, gøre de ting, som skal automaitisres, stoppe og gemme optagelsen, og så få den til at gentage de ting, som man har optaget, hver gang man afspiller den.
Jeg tror, at det er forsøget værd at læse lidt op på emnet.
Lykke til!
Prøv om ikke nedenstående gør det. Virker hos mig, men selvfølgelig med andre mappe/filnavne.
sudo find /Users/kh/Walton -type d -execdir cp /Users/kh/Walton/covers.jpg {} \
Tak for forsøget. Jeg åbner en terminal på harddiskens rod (500SSD). På prompten står der:
Kurts-iMac:/ kh$
Der kører jeg så dit forslag og der kommer da heller ingen fejlmeddelelser, men filen bliver altså ikke kopieret ned i under- og underundermapperne.
Jeg er vokset op med DOS og senere med Windows, men har kørt Mac siden 2011. Det der med "roden" har jeg aldrig forstået. På en DOS/Windowsmaskine er det jo C:[kan ikke lige finde en backslash]>. Afvikler jeg det forkerte sted?
Prøv at skriv "man find" til at finde ud af hvordan kommandoen faktisk fungere. Prøv delvis at bygge den op. f.eks.
find /Users/kh/Walton
find /Users/kh/Walton -type d
Der skulle gerne liste alle filer og derefter kun mapper.
Jeg ændrede -exec til -execdir, fordi det var hvad der lod til virke her. Men har ikke nærstuderet dokumentation og kan tage fejl.
Når der angivet absolutte stier som i mit forslag, så skulle det ikke gøre nogen forskel hvor du befinder dig. Det gør den til gengæld også så ufleksibel, at du ikke kan genbruge den uden at rette i den.
Roden på Unix lignende operativ systemer som macOS er "/" (slash). Det er meget mere rod end "c:\" er (du laver en backslash ved at holde alt-tasten nede og når du laver en / på mac). For det er roden på selve maskinen (alt dens hardware inkl. tilsluttede eksterne enheder) og ikke kun roden på et drev.
Ok, nu prøvede jeg lige at læse lidt videre i man og fik det til at virke uden sudo og execdir
find /Users/kh/Walton -type d -mindepth 1 -exec cp /Users/kh/Walton/covers.jpg {} ";"
Eller med relativ stinavn (./ betyder aktuelle bibliotek), hvis du bevæger dig ind i /Users/kh/Walton først (cd /Users/kh/Walton).
find ./ -type d -mindepth 1 -exec cp covers.jpg {} ";"
Forskellen i forhold til ubuntu forslaget er terminering af -exec med ";" istedet for \.
Jeg har også tilføjet -mindepth 1 for at det kun skal være underbiblioteker, da cover.jpg allerede ligger i /Users/kh/Walton og medføre en fejlmelding som muligvis afbryder resten af forløbet.
Hurraaaa, så virker det. mange tak for hjælpen :-)