Làm cách nào để di chuyển tệp chế độ org cùng với tất cả các tệp đính kèm?


21

Tôi có một vài tập tin, ví dụ file-1.org, file-2.orgtrong cùng một thư mục chia sẻ data/thư mục cho các tệp đính kèm.

Tôi muốn chuyển file-1.orgđến một vị trí khác, tạo một data/thư mục mới trong vị trí đó và di chuyển tất cả các tệp đính kèm thuộc về file-1.orgthư mục mới. Có một cách tự động để làm điều này?


1
Nghe có vẻ hữu ích, nhưng dường như không tồn tại. Tùy chọn đơn giản nhất có thể là di chuyển các tệp trực tiếp và sau đó sử dụng org-attach-syncđể đồng bộ chúng với mục mới.
glucas

1
Có lẽ, di chuyển các tập tin được liên kết không phải là một ý tưởng tốt. Có thể các tệp trong thư mục dữ liệu được tham chiếu trong các tệp org khác trong đó các liên kết bị hỏng nếu các tệp này biến mất. Ồ không, không có tệp org nào như vậy ... cho đến khi bạn nhận ra các liên kết bị hỏng trong trường hợp đặc biệt mà bạn chưa từng nghĩ đến trước đây ;-). Có lẽ, sao chép là sự thay thế tốt hơn. Hoặc ít nhất người ta nên tìm kiếm các trường hợp rõ ràng nhất (ví dụ: tệp org có liên kết trong cùng một thư mục).
Tobias

1
Các tệp org được quản lý bởi một hệ thống kiểm soát phiên bản, như git? Khi tôi thêm tệp đính kèm vào tệp org trong git, tệp đính kèm sẽ tự động được cam kết vào kho lưu trữ.
Melioratus

org-lint có thể giúp tìm các liên kết bị hỏng
alvaro

Câu trả lời:


1

Lệnh này có thể làm những gì bạn muốn:

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

Thay thế file-1.orgbằng tệp org có tệp đính kèm bạn muốn di chuyển và ~/temp/my-new-directoryvị trí của thư mục mới của bạn. Một datathư mục sẽ được tạo với các tệp đính kèm trong đó (nếu bạn muốn di chuyển thay vì sao chép, chuyển --remove-source-filessang rsynclệnh).

Điều này đã được thử nghiệm trên macOS. Bạn có thể phải bỏ -Ecờ trên các nền tảng khác.

LƯU Ý: Vui lòng làm điều này trên một bản sao của các tập tin của bạn . Tôi không phải là chuyên gia về emacs, chưa bao giờ sử dụng tệp đính kèm chế độ org và tôi không có kinh nghiệm sử dụng loại thao tác tệp hacky này. Điều này có thể thổi thư mục chế độ org của bạn vào quên lãng để sao lưu nó trước.


0

Dựa trên câu trả lời của Marcel Samyn, kịch bản sau đây đã giúp tôi theo 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 \;

Sử dụng tập lệnh rút gọn sau đây để có được danh sách các tệp sẽ được sao chép:

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

Không có ^lệnh grep, tôi đã nhận được thông báo sai từ các liên kết email có chứa ": id:".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.