find 命令的一點小結

     今天在CU 論壇上學習shell,看到 l shell基礎二:查找技巧,find及xargs的使用 點擊打開鏈接 時,講解 fine 命令,當我用

 fine .  -type  d 

命令查找當前目錄下的目錄文件時,發現普通文件也會顯示出來。舉個例子

     我在目錄test 裏面新建了一個目錄 test1 以及一個文件 file ,當我準備用上面的命令查找目錄 test1 時,事與願違,test 目錄下的所有文件都會出來,包括 test1。後來我又用

find . -perm 775
   在當前目錄下查找屬性爲 775 的文件(包括普通文件,目錄,符號文件,字符文件等等)時,發現結果出來

    .

    ./test1

   即表示顯示出了當前目錄 test 與 當前目錄下的目錄 test1。所以這即可表明,在查找目錄時,雖然用的路徑是某一目錄 test 下,但查找也會包括當前目錄 test。

   並且,查找時可以一層一層向裏查找,即如果我在 test1 目錄下再新建一個目錄  test2,當我在 test 目錄下查找時,也會將 test2查找出來,返回路徑名爲:

  

./test/test1/test2

    PS:關於 find,還有更多好玩的參數,可以本文第一行給出的鏈接。



一點疑問:

    在繼續學習時,發現 find 後面的參數 -perm 加權限值時有個特點。如果加三位數字,這是毫無疑問的,比較簡單。如果是想要所有用戶均滿足權限,也很簡單,用下面之林即可:

    

find . -perm -7
    這是查找當前目錄所有用戶的權限均爲 rwx 的文件,包括 u(用戶) g(組) o (其他用戶)。 這裏 7 也可以改爲 其他值。

    但是當我在 -perm 參數後加兩個值或三個值時,結果就搞不明白了。 

     如  find . -perm -51

     這是返回的結果與 find . -perm -15 的結果不一樣。這個問題想了半天也沒想明白,留待後續學習解決。


    find + xargs 命令在學習時,有一個有趣的發現:

     我的 test 目錄下有四個文件,分別是普通文件 file 和 file1,還有一個目錄 dir 1,還有一個是一個符號鏈接文件 file2。假設它們預設的權限是 rwx rwx rwx ,當我用如下指令:

 

find . -perm -7 -print | xargs chmod o-w
    本打算將所有權限爲 rwx  rwx rwx 的文件的其他用戶的權限改爲 可讀和可執行,但是後來發現這一指令對 符號鏈接文件不起作用。

 
     後來查了下,發現,因爲鏈接分兩種,軟鏈接和硬鏈接,它們在創建時的權限有所不同:

     軟鏈接:在創建時默認分配的權限是 lrwxrwxrwx,以後不會更改,與它所鏈接的文件無關,即使它鏈接的文件的權限值改了,它也不會改。

     硬鏈接:在創建時的權限值與鏈接目標權限相同,一改全改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章