[問題] 把檔案移到上一層資料夾

看板Linux作者 (一步一腳印)時間12年前 (2011/08/27 21:55), 編輯推噓4(409)
留言13則, 4人參與, 最新討論串1/1
假設有個檔案叫my_file, 路徑是: /home/user/a1/a2/a3/long_folder_name_1/long_folder_name_2/my_file 假設我在的路徑是 /home/user/b1/b2/b3/long_folder_name_3/long_folder_name_4 我想把my_file移到上一層路徑, 即變這樣 /home/user/a1/a2/a3/long_folder_name_1/my_file 通常我會這樣下指令 user@host:~/b1/b2/b3/long_folder_name_3/long_folder_name_4$ \ > mv ~/a1/a2/a3/long_folder_name_1/long_folder_name_2/my_file ~/a1/a2/a3/long_folder_name_1 想請問的是在bash上有沒有比較簡潔的寫法, 像是這樣(實際上不work, 我隨便舉例的): user@host:~/b1/b2/b3/long_folder_name_3/long_folder_name_4$ \ > mv ~/a1/a2/a3/long_folder_name_1/long_folder_name_2/my_file [1]/../.. 其中[1]表示mv的第一個變數 以上是第一個問題 第二個問題是 在termianl上處理長檔名/長路徑有用什麼奇技淫巧嗎? 除了比較常見的tab-completion/把路徑弄成alias之外的? 想聽聽大家的經驗 感謝回答~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.31.149

08/27 22:32, , 1F
你把它寫成函式XD
08/27 22:32, 1F

08/27 22:38, , 2F
把常用的長路徑做symbolic link
08/27 22:38, 2F

08/27 22:38, , 3F
我都用 * 字元,只要給得夠唯一性,展開後就是想要的目錄
08/27 22:38, 3F
看不太懂, 可以說詳細點嗎?

08/27 22:57, , 4F
mv $1 `dirname $1`/.. (寫成script取得路徑)
08/27 22:57, 4F

08/27 22:58, , 5F
或是用pushd 與popd切換目錄
08/27 22:58, 5F

08/27 22:59, , 6F
如果有很多檔要移,可以用find -exec echo {} \; 完成
08/27 22:59, 6F

08/28 00:05, , 7F
mv ~/a1/a2/a3..../long_folder_name_2/{myfile,../}
08/28 00:05, 7F

08/28 00:06, , 8F
用分配律XD
08/28 00:06, 8F
喔喔!!就是這個 感謝qq(不過跟分配律的關係是什麼呢??)

08/28 02:02, , 9F
a{b,c} 會展開成ab ac
08/28 02:02, 9F

08/28 02:03, , 10F
所以還有蠻多應用的
08/28 02:03, 10F

08/28 02:09, , 11F
(cd ~/a1/a2.../long_folder && mv myfile ..) 也可以
08/28 02:09, 11F

08/28 02:10, , 12F
不會動到working dir
08/28 02:10, 12F
開眼界了!!竟然有這些技巧 請問當初是怎麼學到的?

08/28 22:38, , 13F
恩 bash說明裡有寫 ....
08/28 22:38, 13F
恩恩 找到了 有需要的人可以搜尋bash的man page: 分配律 => "Brace Expansion" (...) => "Compound Commands" ※ 編輯: Holocaust123 來自: 140.112.31.149 (08/29 11:08)
文章代碼(AID): #1EMFTU83 (Linux)