給未來的裕翔
如果現在我想要知道某個目錄以下(含子目錄)
的所有包含字串aaa的檔案
find target-dir -f file -exec grep -Hn aaa {} \;
-H是把檔名列出來
-n是把行數列出來
這樣就可以知道aaa在哪個檔案的哪個行數
Showing posts with label findutils. Show all posts
Showing posts with label findutils. Show all posts
Wednesday, August 18, 2010
Tuesday, August 3, 2010
find的rm確認
給未來的裕翔
如果使用find
要針對找到的檔案進行刪除
刪除前要先經使用者確認
find xxxxxx -exec rm -i {} \;
有個更快的喔! 那個確認動作交給find來問
find xxxxxx -ok rm {} \;
如果使用find
要針對找到的檔案進行刪除
刪除前要先經使用者確認
find xxxxxx -exec rm -i {} \;
有個更快的喔! 那個確認動作交給find來問
find xxxxxx -ok rm {} \;
find的and和or
給未來的裕翔
這篇不是解答而是疑問
預設來講
find的每個expression是以and連接
需要or的話
可以-or或是-o
(補充, 需要not的話,可以-not或是 !)
今天我遇到一個問題
找出/底下owner非root, bin的檔案
find / -not -user root -not -user bin -ls 2> /dev/null
一開始我想錯了, 打成
find / -not -user root -or -not -user bin -ls 2> /dev/null
事後想想, 雖然想錯, 不過這指令應該print出更多結果才對阿!?
居然沒有, 而且結果似乎是錯的? 跟我想的完全不一樣!
有請未來的裕翔開導我^^
這篇不是解答而是疑問
預設來講
find的每個expression是以and連接
需要or的話
可以-or或是-o
(補充, 需要not的話,可以-not或是 !)
今天我遇到一個問題
找出/底下owner非root, bin的檔案
find / -not -user root -not -user bin -ls 2> /dev/null
一開始我想錯了, 打成
find / -not -user root -or -not -user bin -ls 2> /dev/null
事後想想, 雖然想錯, 不過這指令應該print出更多結果才對阿!?
居然沒有, 而且結果似乎是錯的? 跟我想的完全不一樣!
有請未來的裕翔開導我^^
Friday, July 30, 2010
需要xargs的理由
給未來的裕翔
為什麼需要xargs?
我小小的大腦認為
因為不是每個指令都可以對stdin作處理的
ex: 指令a | 指令b | 指令c
指令a的output就是指令b的stdin
指令b的output就是指令c的stdin
重複一次
不是每個指令都可以對stdin作處理的
所以需要xargs
ex: 如果我想用whatis針對前面指令丟出來的幾個東西作查詢
因為whatis的用法只處理後面接的對象, ex: whatis blabla
無法ex: 指令d | whatis
所以就必須利用
指令d | xargs whatis
以上: 我小小的大腦的結論
為什麼需要xargs?
我小小的大腦認為
因為不是每個指令都可以對stdin作處理的
ex: 指令a | 指令b | 指令c
指令a的output就是指令b的stdin
指令b的output就是指令c的stdin
重複一次
不是每個指令都可以對stdin作處理的
所以需要xargs
ex: 如果我想用whatis針對前面指令丟出來的幾個東西作查詢
因為whatis的用法只處理後面接的對象, ex: whatis blabla
無法ex: 指令d | whatis
所以就必須利用
指令d | xargs whatis
以上: 我小小的大腦的結論
Sunday, July 18, 2010
使用find+perm移除執行檔
給未來的裕翔
因為我想試試看opencv提供的sample裡面的3個makefile
所以每做完一個
就要把它們產生的binary移掉
想法是: 把至少具有執行的權限的檔案(目錄也可執行 但不是我要的), 全部移除
find -perm -111 -type f -exec sudo rm -f {} \;
貼心小提醒
最好是先用list, 免得牽連無辜
find -perm -111 -type f -exec sudo ls -l {} \;
ps: 先後試了GNUmakefile, makefile.gnu, makefile.ms
只有GNUmakefile可以work, 真出乎我意料
因為我想試試看opencv提供的sample裡面的3個makefile
所以每做完一個
就要把它們產生的binary移掉
想法是: 把至少具有執行的權限的檔案(目錄也可執行 但不是我要的), 全部移除
find -perm -111 -type f -exec sudo rm -f {} \;
貼心小提醒
最好是先用list, 免得牽連無辜
find -perm -111 -type f -exec sudo ls -l {} \;
ps: 先後試了GNUmakefile, makefile.gnu, makefile.ms
只有GNUmakefile可以work, 真出乎我意料
find的perm
給未來的裕翔
使用find時搭配perm選項時
我的記法是
find -perm 0744
找權限剛好和這個一樣的
find -perm -0744
找權限大於和這個一樣的. 減號可以想成下限, 至少要包含這些
find -perm +0744
找權限小於和這個一樣的. 加號可以想成上限, 最多別超過這些
再舉一個跟 suid和sgid有關的例子
鳥哥說
find / -perm +7000
只要含有s, s或t的就找出來
如果是find / -perm -7000
同時含有s, s和t的才會找出來
使用find時搭配perm選項時
我的記法是
find -perm 0744
找權限剛好和這個一樣的
find -perm -0744
找權限大於和這個一樣的. 減號可以想成下限, 至少要包含這些
find -perm +0744
找權限小於和這個一樣的. 加號可以想成上限, 最多別超過這些
再舉一個跟 suid和sgid有關的例子
鳥哥說
find / -perm +7000
只要含有s, s或t的就找出來
如果是find / -perm -7000
同時含有s, s和t的才會找出來
Sunday, May 23, 2010
檔案搜尋指令whereis, locate, find, which
給未來的裕翔
鳥哥建議先用whereis和locate, 找不到再考慮用find
當我whereis xxx的時候
會列出最後路徑最後一欄含有xxx的
如果是locate xxx
則路徑當中有etc的都會列出
ex:
which ps
=> /bin/ps
whereis
=> ps: /bin/ps /usr/share/man/man1/ps.1.gz
鳥哥建議先用whereis和locate, 找不到再考慮用find
當我whereis xxx的時候
會列出最後路徑最後一欄含有xxx的
如果是locate xxx
則路徑當中有etc的都會列出
ex:
which ps
=> /bin/ps
whereis
=> ps: /bin/ps /usr/share/man/man1/ps.1.gz
Subscribe to:
Posts (Atom)