すべての添付ファイルとともに組織モードファイルを移動するにはどうすればよいですか?


21

たとえばfile-1.org、添付ファイルfile-2.orgdata/ディレクトリを共有する同じディレクトリにいくつかのファイルがあります。

file-1.org別の場所に移動してdata/、その場所に新しいディレクトリを作成し、新しいディレクトリに属する​​すべての添付ファイルを移動したいと思いfile-1.orgます。これを自動的に行う方法はありますか?


1
これは便利に聞こえますが、存在しないようです。最も簡単なオプションは、ファイルを直接移動してから、org-attach-syncそれらを使用して新しいアイテムと同期することです。
グルーカス

1
たぶん、リンクされたファイルを移動することはそれほど良い考えではありません。データフォルダ内のファイルが他の組織ファイルで参照されており、これらのファイルが消えるとリンクが壊れる可能性があります。ああ、そのような組織ファイルはありません ... あなたが前に考えもしなかった特別な場合に壊れたリンクに気付くまで ;-)。たぶん、コピーがより良い代替手段です。または、少なくとも最も明白なケースを検索する必要があります(たとえば、同じフォルダーにリンクがある組織ファイル)。
トバイアス

1
組織ファイルは、gitなどのバージョン管理システムによって管理されていますか?gitで組織ファイルに添付ファイルを追加すると、添付ファイルは自動的にリポジトリにコミットされます。
Melioratus

ORG-lintは壊れたリンク見つけるのに役立つかもしれ
アルバロ

回答:


1

このコマンドはあなたが望むことをすることができます:

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 \;

file-1.org添付ファイルを移動する組織ファイルと~/temp/my-new-directory、新しいディレクトリの場所に置き換えます。data添付ファイルを含むディレクトリが作成されます(コピーの代わりに移動する場合は--remove-source-filesrsyncコマンドに渡します)。

これはmacOSでテストされました。-E他のプラットフォームではフラグを省略しなければならない場合があります。

注: ファイルのコピーに対してこれを行ってください。私はemacsの専門家ではなく、組織モードの添付ファイルを使用したことがなく、この種のハッキングされたファイル操作の使用経験がありません。これにより、org-modeフォルダーが忘却に追い込まれる可能性があるため、最初にバックアップしてください。


0

Marcel Samynの回答に基づいて、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 \;

次の縮小スクリプトを使用して、コピーするファイルのリストを取得します。

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'|' -)).*"

^grepコマンドを使用しないと、「:id:」を含むメールリンクから誤検知が発生しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.