當前位置: 首頁>>技術教程>>正文


我應該如何搜索所有隱藏文件?

, , ,

問題描述

我想對目錄中的所有隱藏文件執行一些操作(比如 chown )。

我知道這 .* 不是一個好主意,因為它也會找到當前的 .和父 .. 目錄(我知道 rm 將無法對 . 和 .. 進行操作,但其他命令,包括 chown 和 chmod,會很高興地生效)

但是我所有的隱藏文件都有不同的名字!

我應該如何在排除 ... 的同時搜索所有隱藏文件?

最佳答案

您可以使用以下 extglob 模式:

.@(!(.|))
  • . 首先匹配文字 .

  • @() 是一個 extglob 模式,將匹配裏麵的模式之一,因為我們裏麵隻有一個模式,它會選擇

  • !(.|) 是另一種 extglob 模式(嵌套),它匹配沒有或一個 . 的任何文件;由於我們已經在開始時匹配了 .,整個模式將匹配所有以 . 開頭的文件,除了 ...

extglob 在 Ubuntu 中默認在 bash 的交互式會話中啟用。如果沒有,請先啟用它:

shopt -s extglob

例子:

$ echo .@(!(.|))
.bar .foo .spam

次佳答案

 GLOBIGNORE=".:.."

隱藏 .和 .. 目錄。這也設置了 dotglob 選項:* 匹配隱藏和非隱藏文件。

你也可以這樣做

shopt -s dotglob

Gilles 🙂

第三種答案

您可以在此處使用 find 命令。例如類似的東西

find -type f -name ".*" -exec chmod 775 {} \;

這將找到隱藏文件並更改權限


編輯以包含@gerrit 的評論:

find -type f -maxdepth 1 -name ".*" -exec chmod 775 {} \;

這將限製在當前目錄的頂部搜索,而不是遞歸搜索。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/11989.html,未經允許,請勿轉載。