Files

判斷文件夾/文件是否隱藏在 Mac OS X 中

  • December 15, 2019

我知道你可以通過chflags hidden foo.txtand來設置或取消設置文件夾/文件的隱藏標誌chflags nohidden foo.txt

但是有沒有辦法告訴文件夾/文件目前是否隱藏?

我不想只確定文件夾/文件是否以點開頭。

根據ls 手冊頁,您應該可以將選項與使用 ls 查看標誌-O的選項結合使用。-l例如:

ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt
chflags hidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt
chflags nohidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt

編輯:只是為了給 OP 想要的更具體的解決方案(見下面的評論):要查看文件夾是否隱藏,我們可以將-a選項傳遞給 ls 以查看文件夾本身。然後,我們可以將輸出通過管道傳輸到sed -n 2p(感謝Stack Overflow)以獲得該輸出所需的行。一個例子:

mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .

編輯 2:對於無論是文件還是文件夾都應該有效的命令,我們需要做一些更hacky的事情。

所需的輸出行ls -al取決於事物是文件還是文件夾,因為文件夾顯示總數,而文件不顯示。為了解決這個問題,我們可以使用 grep 查找字元r。這應該在所有文件/文件夾中(幾乎所有文件/文件夾都應該至少有一個讀取權限),但不在總計行中。

由於我們想要獲取的行然後成為第一行,我們可以使用head -n 1來獲取第一行(替代方案,如果您更喜歡 sed,sed -n 1p可以使用)。

因此,例如使用目錄:

mkdir foo
chflags hidden foo
ls -aOl foo | grep r | head -n 1
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .

並帶有一個文件:

touch foo.txt
chflags hidden foo.txt
ls -aOl foo.txt | grep r | head -n 1
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt

編輯 3:請參閱下面 Tyilo 的答案,以獲得比 grepping for 更好的方法r:)

引用自:https://unix.stackexchange.com/questions/18973