2009/01/16

自動歸檔

先解釋一下我的 "自動歸檔" 是什麼意思。
我會不定時的,把硬碟中的檔案群,以檔案命名建目錄,再把同名的檔案全部都搬進去
這樣找起東西來比較輕鬆。

例:
[dmhy][exale][01][big5].avi
[dmhy][exale][02][big5].avi
[dmhy][exale][03][big5].avi
[dmhy][exale][04][big5].avi
[dmhy][exale][05][big5].avi

建一個 [dmhy][exale] 的目錄後,把以上檔案都搬進去

有時候 anime 太多,整理起來十分麻煩。
所以就興起寫一個 scripts 來做半自動歸檔的動作。

原本我是寫這樣:
F=`find . -type d -print`
for A in $F; do
if [ -d "$A" ]; then
mv "$A"*.* "$A"
else
mkdir -p "$A"
mv "$A"*.* "$A"
done

問題來了,當這支 scripts 遇到 "nut cgi bin" 時,會把它當成
nut
cgi
bin
三個字串
我嘗試過在 scripts 中把 $A 用 "$A" 包起來,但沒有作用
後來 garyzyg、CrBoy、psboy 指點,運用了 read ,解決字串會依空白拆行的問題

find . -type d -print |while read A; do
cp "$A"*.* "$A"
done
但是這樣會有錯誤訊息
cp: omitting directory `..'
原因 find 會列出 . 這層目錄,而且還多了 ./ 這個符號;於是我參考
http://blog.wu-boy.com/2009/01/13/712/
解決這個問題

重新寫成
find . -maxdepth 1 -mindepth 1 -type d -exec basename {} \; |while read A; do
cp "$A"*.* "$A"
done
就解決了我的問題 ^ ^

後記:
這樣的程式有個小缺點:
得先依檔案名稱建立目錄,才能讓 scripts 依目錄名稱去判斷檔案,再把檔案搬到目錄下

所以進階的寫法就是,以下面這個字串
[dmhy][exale][01][big5].avi

判斷
[dmhy][exale]

是否存在,若不存在,則建立
我要做的,就是把 [01] 開始的字串,全部拿掉,剩下的事就好辦了 :P

麻煩的是 sed 我不熟... @ @
正規式也不熟 ... 0rz

20 分鐘後的新增:
#!/bin/bash

# 依照檔案名稱先看看目錄在不在
# 不在->建目錄->搬檔案進去
# 在----------->搬檔案進去

# 先將目前檔案製成只有名稱,不含 "." 及副檔名的清單
find . -maxdepth 1 -mindepth 1 -type f -exec basename {} \; |sort|uniq >/tmp/filelist_raw
sed 's/\[[0-9][0-9]\]*.*$//g' /tmp/filelist_raw |sort|uniq > /tmp/filelist

# 再把檔案搬進去

cat /tmp/filelist |while read A; do
if [ -d "$A" ]; then
mv "$A"*.* "$A"
else
mkdir "$A"
mv "$A"*.* "$A"
fi
done

rm -f /tmp/filelist*

搞定~ ^ ^
shell scripts 實在是好物啊 (茶)

60 分鐘後續新增:
又想到一個進階的寫法:
  1. 列出所有檔案
  2. 以檔案名稱製作清單
  3. 檢查清單上的目錄是否存在
    1. 若存在,搬檔案進去
    2. 若不存在,依清單檢查檔案是否一個以上
      1. 一個以上:建目錄
      2. 一個:不作任何處理
  4. 建目錄後搬檔案進去
目前還需實作 3-2 的部份

2009/01/12

tiger 掛點

前言:
雖然我用 ibook 快 3 年了~ 不過這個 blog 從未寫過 mac 的東西 :P
說真的,沒什麼好寫的,頂多是什麼軟體好用(常用的不超過五個)
再來就是快速鍵(反正 F1 裡面一堆)
然後是自己亂玩重灌 ...

這算是第一次出事吧 (所以呢?不覺的有點值得記念嗎? XD)

以下是記錄
----------------------------------------------------------------------------------------------------
我的老虎掛了~ 還死的不明不白 Q Q

前一天,明明還正常關機,隔天早上,就不能用了
沒裝什麼奇怪的軟體(只有 alien, dort, itunes, iterm, firefox, mplayer os, vlc)
硬體是 ibook 1.2g, 768 ddr, 有無線網卡
掛掉之前,我應該有更新到 10.4.11


掛掉的症狀是
聽到"登~~~"後,出現蘋果的開機進度小視窗
原本都是很快的(約5秒)
掛掉時,進度跑了至少快兩分鐘,然後居然出現 使用者登入 視窗
問我帳號密碼!? (我只有建一個使用者,以前也都沒看過這個視窗)
我輸入自己的使用者(沒設密碼),按登入(enter)後,視窗晃了幾下,
似是密碼錯誤、或是沒有這個使用者~

我以為一定要設密碼,就拿光碟出來開機,改密碼;再重新開機

一樣,這次的開機進度仍然要兩分鐘,仍然要我輸入帳號密碼
而我用改過密碼的 root 和 user 登入,系統仍然不接受

後來我嘗試用磁碟工具驗證、修理權限,重開機,狀況一樣

我用光碟開機,使用終端機進去 /Volume/HDD 看,我的使用者資料明明都還在,
cat 幾個檔案也都算正常,但是系統卻不讓我登入 = ="

我想問幾個問題:
1. 上面的症狀是什麼意思?是什麼地方壞掉?
2. 為什麼會出現這種情形?
3. 如果我用光碟開機,有什麼方法可以把自己的使用者資料備份出來? (ftp/usb ?)