iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 17
0

前面介紹了 for 迴圈, for 迴圈也可以搭配 Command Substitutionls 把目前的檔案列表丟進去 for 的清單。不過這個還是有個問題:

「當檔名有空白的時候」

空白就已經很麻煩,更不用說有時候還會遇到「有子目錄」的狀況,像是 Mac 很喜歡建立 .DS_Store 檔案,可是我超討厭隨身碟或是網路磁碟機上面有 .DS_Store 檔案,這時候怎麼辦呢?

首先最開始要找出這些檔案, find 搜尋檔名的指令是這樣:

find -name ".DS_Store"

接著 find 指令就會把所有搜尋到的 .DS_Store 輸出到 stdout ,接下來呢,再用 for file in ``cat`` 嗎?雖然可以不過空白問題還是很難纏,其實是可以這樣下指令的:

find -name ".DS_Store" -exec rm "{}" \;

裡面的 {} 會被 find 展成搜尋結果,後面的 ; 為什麼要跳脫?是得因為 Shell 會把 ; 當成指令結束,可是這個 ; 是要給 find 指令的參數,所以當然要用 \ 跳脫囉。

今天跨年,就簡單介紹 find 指令到這吧。


我是誰?
我是 dd-han ,可以叫我呆翰,是國立臺中科技大學的延畢生 與 創科資訊的時習生。


上一篇
[鐵人賽第16天] 正規表達的使用
下一篇
[鐵人賽第18天] 宣告 function 來用吧
系列文
30 天的 ShellScript 教室解決開發者的困擾23

尚未有邦友留言

立即登入留言