我試圖從查找命令的結果中創建一個符號鏈接(軟鏈接)。我使用sed刪除文件名前面的./。我這樣做是爲了讓我可以將文件名粘貼到鏈接保存路徑的末尾。我正在使用Ubuntu Server 8.04進行這項工作。從查找中創建符號鏈接
我這個職位,這是一種解決我的問題的教訓,但不quite-
How do I selectively create symbolic links to specific files in another directory in LINUX?
產生的文件名沒有工作,雖然如此,我開始努力學習AWK然後決定sed。
我正在使用單線循環來完成此操作。問題在於循環的結構是分隔文件名,爲文件名中的每個單詞創建一個鏈接。有相當多的文件,我想自動化每個鏈接採取它鏈接文件的文件名的過程。
我很喜歡基本的bash命令,但我遠不是命令行專家。我用ls和awk開始了這個工作,然後開始尋找sed。我的sed語法可能會更好,但我已經在兩天內學會了這一點,現在我有點卡住了。
爲噸find -type f -name "*txt*" | sed -e 's/.//' -e 's$/$$'; do echo ln -s $t ../folder2/$t;
做
任何幫助或建議將不勝感激。謝謝。
可以避開'/'從'輸出傳遞一個列表find'。的路徑。 'find */-options ...'我想這也可能有一個選項。 – tripleee
非工作鏈接的問題是相對路徑名稱需要相對於鏈接目標。重寫以啓動循環一個目錄('find source -options ... -exec ln -s'{}'target \;'),使用絕對路徑或擴展您的'sed'腳本來解析相對於目的地(在前面添加「../ source /」)。 「ln -s」的第一個參數沒有以任何方式被重寫,它被逐字地用作符號鏈接的內容,沒有要求或檢查它在鏈接創建時解析爲現有文件。 – tripleee
我想你是指'sed'%^ \ ./%%''。爲了允許在正則表達式中使用斜槓,'sed'允許你在's'命令之後使用任何標點符號,儘管斜線是傳統的默認分隔符,在'vi'和'ed'之前模仿了搜索字符它。或者,您可以反斜槓 - 將分隔符轉義爲在表達式中將其引用爲文字字符。 – tripleee