Answers:
根据ls手册页,您应该能够将-O
选项与-l
选项一起使用ls查看标志。例如:
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:对于无论文件还是文件夹均有效的命令,我们需要做一些更棘手的事情。
所需的输出行会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:比grepping更好的方法,请参见下面的Tyilo答案r
:)
ls -Ol fooDir/ | grep hidden
)将其通过管道传输,以仅查看隐藏的文件/文件夹。它仍然会显示所有文件,但是如果您通过sed / awk魔术将其通过管道传输(恐怕其他人会在这里帮助您),您应该只能得到文件列表。
-a
在ls中添加选项。要仅从输出中获得所需的行,可以使用sed。例如:ls -aOl foo | sed -n 2p
。这将显示一行输出。如果它包含单词“ hidden”,则foo被隐藏。如果不是,则不隐藏foo。:)
ls -Old dirname/
将显示目录本身的属性,而不是目录的内容。
在这里找到解决方案:如何使ls仅显示有关指定目录的信息,而不显示其子文件或文件夹内容的信息?
基本上是这样ls -ldO foo
,然后您只需追加| awk '{ print $5 }'
使其显示信息即可。
stat
。
如通过引用@Tyilo,@Sorpigal建议尝试stat
,其编码“的标志位”与%Xf
(他X编码的用户˚F滞后),并且是用于机器解析安全得多。
$ stat -f "%Xf" ~/Library
8000
用户标志的十六进制值位于此处:grep UF /usr/include/sys/stat.h
。从macOS 10.11开始:
#define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */
#define UF_NODUMP 0x00000001 /* do not dump file */
#define UF_IMMUTABLE 0x00000002 /* file may not be changed */
#define UF_APPEND 0x00000004 /* writes to file may only append */
#define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */
/* #define UF_NOUNLINK 0x00000010 */ /* file may not be removed or renamed */
#define UF_COMPRESSED 0x00000020 /* file is hfs-compressed */
/* UF_TRACKED is used for dealing with document IDs. We no longer issue
notifications for deletes or renames for files which have UF_TRACKED set. */
#define UF_TRACKED 0x00000040
#define UF_HIDDEN 0x00008000 /* hint that this item should not be */