파일이나 디렉터리가 숨겨져 있는지 확인

파일이나 디렉터리가 숨겨져 있는지 확인

디렉터리의 모든 파일(숨겨진 파일 포함)을 반복적으로 인쇄하고 파일 수, 숨겨진 파일, 숨겨진 디렉터리 및 디렉터리를 기록하는 bash 스크립트를 작성하려고 합니다. 이것은 과제의 일부이므로 -R또는 을 사용할 수 없습니다 find.du

listAllFiles() 
 {
  local dir=$1
  local file
  directoryCounter=0
  fileCounter=0
  hiddenFileCounter=0
  hiddenDirectoryCounter=0

  for file in "$dir"/*; do
  if [[ -d $file ]]; then
      listAllFiles "$file"
      directoryCounter+=1
  elif [[ -f $file ]];then
      fileCounter+=1]
      ls -l $file
  elif [[file is a hidden directory]];then
      listAllFile "$file"
      hiddenDirectoryCounter+=1
  elif [[file is a hidden file]];then
      hiddenFileCounter+=1
      ls -l $file
  fi
     done
 }

파일/디렉토리가 숨겨져 있는지 감지하는 방법이 있습니까?

답변1

숨겨진 파일과 디렉터리의 이름은 로 시작하므로 .Bash에서 다음 솔루션을 사용할 수 있습니다.

# Skip '.' and '..':
if [ "$file_name" = . ] || [ "$file_name" = .. ];then
    continue
fi
# Find hidden files:
if [[ "$file_name" =~ ^\. ]];then # if file name starts with a .
...

답변2

적어도 파일 시스템 메타데이터에 할당된 일부 속성을 기반으로 하지 않는 Unix 기본 파일 시스템에는 숨겨진 파일이나 디렉터리가 없습니다.

사용자 정의를 위해 일부 명령(예: , ls)은 기본적으로 이름이 " "로 시작하는 파일/디렉토리를 표시하지 않습니다 .. 다른 도구(예: 노틸러스)는 이 규칙을 따릅니다. 매뉴얼 페이지를 보면 ls숨겨진 파일에 쓰지 않습니다.

-a, --all
     do not ignore entries starting with .

~에 따르면위키피디아이 동작은 초기 Unix의 소프트웨어 버그로 인해 발생합니다.

.findls

Windows 파일 시스템에는 속성 기반 숨김 파일이 있습니다.이것질문.

ls사람들이 숨김 동작을 숨겨진 파일이 있는 것으로 착각하는 경우가 많기 때문에 귀하의 과제 중 일부는 까다로운 과제인 것 같습니다 .

답변3

find /directory_path -type f | wc -l파일 수를 알려줄 것입니다

find /directory_path -type d | wc -l디렉토리 수를 알려줄 것입니다

관련 정보