Come spostare un file in modalità org insieme a tutti gli allegati?


21

Ho un paio di file, ad esempio file-1.org, file-2.orgnella stessa directory che condivide la data/directory per gli allegati.

Vorrei spostarmi file-1.orgin un'altra posizione, creare una nuova data/directory in quella posizione e spostare tutti gli allegati che appartengono alla file-1.orgnuova directory. C'è un modo automatico per farlo?


1
Sembra utile, ma non sembra esistere. L'opzione più semplice potrebbe essere quella di spostare i file direttamente e quindi utilizzarli org-attach-syncper sincronizzarli con il nuovo elemento.
Glucas,

1
Forse, spostare i file collegati non è una buona idea. È possibile che i file nella cartella dei dati siano referenziati in altri file organizzativi in ​​cui i collegamenti si interrompono se questi file scompaiono. Oh no, non ci sono file organizzativi simili ... finché non ti accorgi dei collegamenti interrotti nel caso speciale a cui non hai mai pensato prima ;-). Forse, la copia è l'alternativa migliore. Oppure si dovrebbe almeno cercare i casi più ovvi (ad esempio, i file org con collegamenti nella stessa cartella).
Tobias,

1
I file organizzativi sono gestiti da un sistema di controllo della versione, come git? Quando aggiungo allegati a un file org in git, gli allegati vengono automaticamente assegnati al repository.
Melioratus,

org-lint può aiutare a trovare collegamenti non funzionanti
alvaro

Risposte:


1

Questo comando potrebbe fare quello che vuoi:

find -E data -type f -iregex ".*($(cat file-1.org | grep -i ':id:' | perl -pe 's/^\s*:id:\s*(\w{2})([\w-]+)$/$1\\\/$2/i' | paste -s -d'|' -)).*" -exec rsync -R '{}' ~/temp/my-new-directory \;

Sostituisci file-1.orgcon il file org di cui desideri spostare gli allegati e ~/temp/my-new-directorycon la posizione della nuova directory. dataVerrà creata una directory con i file allegati (se si desidera spostare invece di copiare, passare --remove-source-filesal rsynccomando).

Questo è stato testato su macOS. Potrebbe essere necessario omettere la -Ebandiera su altre piattaforme.

NOTA: Si prega di fare questo su una copia dei file . Non sono un esperto di emacs, non ho mai usato gli allegati in modalità org e non ho esperienza con questo tipo di manipolazione dei file hacky. Questo potrebbe far saltare la tua cartella in modalità org nell'oblio, quindi esegui prima il backup.


0

Basato sulla risposta di Marcel Samyn, il seguente script ha funzionato per me sotto ArchLinux:

find data -regextype awk -type f -iregex ".*($(cat file-1.org | grep -i '^:id:' | perl -pe 's/^\s*:id:\s*(\w{2})([\w-]+)$/$1\/$2/i' | paste -s -d'|' -)).*"  -exec rsync -R '{}' ~/temp/my-new-directory \;

Utilizzare il seguente script ridotto per ottenere un elenco di file da copiare:

find data -regextype awk -type f -iregex ".*($(cat file-1.org | grep -i '^:id:' | perl -pe 's/^\s*:id:\s*(\w{2})([\w-]+)$/$1\/$2/i' | paste -s -d'|' -)).*"

Senza il ^comando in grep, ho ottenuto falsi positivi dai collegamenti e-mail contenenti ": id:".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.