UNIX 檔案系統教材:檔案的遷移與易名

假使 FA 和 FB 是在目前資料夾內的普通檔案。 在 UNIX 裡面,遷移與易名 (move) 都是用指令 mv。基本形式是

mv FA FB
意思是將檔案 FA 易名到 FB。 如果 FA 不存在,則 mv 會失敗。 如果 FB 已經存在,有些系統的 mv 會詢問您是否確定要覆蓋原來的 FB, 有些不會詢問。請非常小心。如果希望 mv 必然詢問你,可以下指令
mv -i FA FB

如果 FOLDER 是一個資料夾 (可以含有路徑),則

mv FA FOLDER/FB
表示要將 FA 遷移到 FOLDER 裡面,並易名為 FB。但是
mv FA FOLDER
表示要將 FA 遷移到 FOLDER 裡面,保持原來的名字 FA。反之,
mv FOLDER/FA FB
表示要將 FOLDER 裡面的 FA 遷移到目前的資料夾,並易名為 FB。但是
mv FOLDER/FA .
表示要將 FOLDER 裡面的 FA 遷移到目前的資料夾,保持原來的名字 FA。

如果 FOLDONE 和 FOLDTWO 是兩個資料夾,則

mv FOLDONE/FA FOLDTWO/FB
或者
mv FOLDONE/FA FOLDTWO
都是很容易理解的遷移方式。

如果 FOLDER 是一個資料夾,則可以說

mv FOLDER FOB
如果 FOB 已經存在,而且是個普通檔案,則 mv 會執行失敗。 如果 FOB 不存在,則相當於只是將資料夾的名字從 FOLDER 改為 FOB。 如果 FOB 已經存在,而且是個資料夾,而且 FOLDER 和 FOB 坐落於同一個磁碟區內, 則會將 FOLDER 整個資料夾遷移到 FOB 的裡面; 否則 mv 還是會執行失敗。 也就是說,只有在同一個磁碟區內,才能遷移資料夾。

如果 WILD 是一個利用 * 和 [] 符號組成的描述語句, 而且 FOLDER 是一個資料夾,則可以用

mv WILD FOLDER
將所有符合 WILD 之描述的檔案全部遷移到 FOLDER 裡面,維持它們原來的名字。

在同一個磁碟區中被遷移或易名的檔案, 只有目錄資料被改變,它自己所佔用的磁碟空間並沒有改變。 所以,這個檔案本身的修改時間和讀取時間,都不會改變。 反而是它們所屬的資料夾受到改變,因此其修改和讀取時間都被更新。 例如,在將 a.txt 易名之前,我們說

dir -d . a.txt
得到結果
drwxr-xr-x  25 shawn    faculty     2048 Oct 26 19:31 .
-rw-r--r--   1 shawn    faculty      367 Jun 10 16:23 a.txt
然後我們說
mv a.txt b.txt
成功了之後再說
dir -d . a.txt
結果就變成了
drwxr-xr-x  25 shawn    faculty     2048 Oct 26 19:57 .
-rw-r--r--   1 shawn    faculty      367 Jun 10 16:23 b.txt
觀察 b.txt 和 a.txt 的時間相同,但是目前這個資料夾本身的時間卻更新了。

如果執行了跨磁碟區的遷移,則真的要先複製到新磁碟, 再從舊磁碟刪除。因此檔案所佔用的磁碟空間當然改變了。 但是 UNIX 還是不更新它的檔案修改時間。

習題

單維彰 (2000/10/26) --- 2010/11/08 (賴臨安發現錯誤) [Prev] [Next] [Up]