作者pgychen (pp)
站內Linux
標題[閒聊] 請問 cp 的逸事
時間Sun Oct 11 07:21:04 2009
一開始,我 copy 一百個以數字為檔名的檔案 (001.jpg, 002.jpg, 003.jpg,
... 099.jpg, 100.jpg),copy 到隨身碟上。
cp source_direction/* target_direction
瞬間,一秒就完成,可是我要拔隨身碟的時候,等 sync 等了好些時候。
後來,我發現 target_direction 目錄裡面的檔案,並不是按照檔名順序排的。
就是說:非 001.jpg, 002.jpg, 003.jpg, 004.jpg, 005.jpg, ....
而是這樣排 045.jpg, 082.jpg, 034.jpg, 017.jpg, 062.jpg, ....
檔案都有,但是就是看不出來,是依時間,或是大小 copy 進去的。
後來我全殺掉 rm -f target_direction/*
然後再 copy 乙次
cp source_direction/0??.jpg target_direction
這時,怪事出現了,他真的是一個一個 copy,按照檔名的順序來 copy
不會像上次一樣,立刻出現提示符號,然後再慢慢 sync
而是真的寫入一個,再寫入一個,(因為我開另一個終端機, ls 看他真的慢慢 copy)
我猜想, cp * 的時候,他是開多個線程(我猜的),一股腦,不依順序,趕快 copy
然後呢, cp ? 的時候,則是尋到符合的,然後才 copy 進去,所以會照檔名順序
不知道,有否專研 kernel 的大大,可以公佈正確解答嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.99.69
→ pcjustin:ftp://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.gz 10/11 10:32
→ pcjustin:有興趣可以看原始碼歐 10/11 10:33
推 YuiHirasawa:樓上太威了... 10/11 11:43
推 coldnew:* 和 ? 是shell的事,和cp指令無關,欲之詳情 10/11 12:12
→ coldnew:請見UNIX PowerTools 這本書(有中譯本) 10/11 12:13
推 YuiHirasawa:O'reilly 10/11 13:14
推 coldnew:忘記說,作者之一就是O'reilly的老闆Tim O'Reilly 10/11 13:43