[英]Create symlink from the contents of a file
由於工作流程效率低下,我不得不在Linux機器和Windows機器之間復制目錄。 目錄包含符號鏈接,這些符號鏈接(在復制Linux> Windows> Linux之后)包含純文本鏈接(例如foobar.C
包含文本../../../Foo/Bar/foobar.C
)
有沒有一種有效的方法可以從文件的內容中遞歸地重新創建符號鏈接,以獲得完整的目錄?
我努力了:
find . | xargs ln -s ??A?? ??B?? && mv ??B?? ??A??
我真的不知道如何填充變量,但是??A??
應該是文件和符號“ ??B??
”中符號鏈接的目標。 應該是后綴_temp
的文件名。
如果您確定所有文件都包含符號鏈接,那不是很難。
find . -print0 | xargs -r 0 sh -c '
for f; do ln -s "$(cat "$f")" "${f}_temp" && mv "${f}_temp" "$f"; done' _
_
dummy參數是必需的,因為sh -c
的第二個參數用於在子shell中填充$0
。 Shell本身是必需的,因為您不能直接將多個命令傳遞給xargs
。
-print0
和相應的xargs -0
是GNU擴展,可以正確處理棘手的文件名。 有關詳細信息,請參見find
手冊。
在進行符號鏈接之前,我可能會添加一個簡單的驗證檢查; 例如,如果grep -cm2 .
在文件返回2時,跳過文件(它包含多行文本)。 如果可以更具體(例如,所有符號鏈接都以../
開頭),則一定要更具體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.