Mac OS X에서 폴더/파일이 숨겨져 있는지 확인

Mac OS X에서 폴더/파일이 숨겨져 있는지 확인

chflags hidden foo.txt및 를 수행하여 폴더/파일에 대한 숨겨진 플래그를 설정하거나 설정 해제할 수 있다는 것을 알고 있습니다 chflags nohidden foo.txt.

그런데 폴더/파일이 현재 숨겨져 있는지 알 수 있는 방법이 있나요?

폴더/파일이 점으로 시작하는지 확인하고 싶지 않습니다.

답변1

~에 따르면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가 원했던 것에 대한 보다 구체적인 솔루션을 제공하기 위해(아래 설명 참조) 폴더가 숨겨져 있는지 확인하려면 옵션을 -als에 전달하여 폴더 자체를 볼 수 있습니다. 그런 다음 출력을 sed -n 2p다음으로 파이프할 수 있습니다.스택 오버플로) 해당 출력에 필요한 라인을 가져옵니다. 한 가지 예:

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: grep보다 더 나은 방법은 아래 Tyilo의 답변을 참조하십시오 r. :)

답변2

여기에서 해결책을 찾았습니다.ls가 지정된 디렉토리에 대한 정보만 표시하고 하위 파일이나 폴더 내용에 대한 정보는 표시하지 않도록 하려면 어떻게 해야 합니까?

기본적으로 그게 전부 이고, 정보를 표시하도록 ls -ldO foo추가하기만 하면 됩니다 .| awk '{ print $5 }'

답변3

인용된 대로@타이일로,@sopigal시도해 보는 것이 좋습니다 stat. "사용자 플래그"를 %Xf다음 과 같이 인코딩합니다.엑스코딩 사용자에프지연)이며 기계 구문 분석에 더 안전합니다.

$ stat -f "%Xf" ~/Library
8000

사용자 플래그의 16진수 값은 다음 위치에 있습니다 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 */

관련 정보