Files
判斷文件夾/文件是否隱藏在 Mac OS X 中
我知道你可以通過
chflags hidden foo.txt
and來設置或取消設置文件夾/文件的隱藏標誌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
:)