디렉터리의 모든 파일(숨겨진 파일 포함)을 반복적으로 인쇄하고 파일 수, 숨겨진 파일, 숨겨진 디렉터리 및 디렉터리를 기록하는 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의 소프트웨어 버그로 인해 발생합니다.
.find
ls
Windows 파일 시스템에는 속성 기반 숨김 파일이 있습니다.이것질문.
ls
사람들이 숨김 동작을 숨겨진 파일이 있는 것으로 착각하는 경우가 많기 때문에 귀하의 과제 중 일부는 까다로운 과제인 것 같습니다 .
답변3
find /directory_path -type f | wc -l
파일 수를 알려줄 것입니다
find /directory_path -type d | wc -l
디렉토리 수를 알려줄 것입니다