Linux-Ubuntu / 디렉터리에 있는 파일과 파일 개수를 보고 싶습니다.

Linux-Ubuntu / 디렉터리에 있는 파일과 파일 개수를 보고 싶습니다.

디렉토리(데스크톱)의 파일과 쉘 스크립트의 파일 수를 보고 싶습니다. 어떻게 해야 합니까?

내가 이걸 발견한 거죠?

#!/bin/bash

echo "Files:"
find . -maxdepth 1 -type f

echo "Number of files:"
ls -Anq | grep -c '^-'

답변1

맞는 것으로 확인되었으나분석하면 안 된다ls, 파일 개수조차 찾을 수 없습니다. GNU 찾기가 있으므로 선택하십시오.

#!/bin/bash
echo "Files:"
find . -maxdepth 1 -type f

echo "Number of files:"
find . -maxdepth 1 -type f -printf . | wc -c

두 번째는 각 파일에 대해 finda를 인쇄한 .다음 wc포인트를 계산합니다.

답변2

find여기는 필요없어

#!/bin/bash

# nullglob: make patterns that don't match expand to nothing
# dotglob: also expand patterns to hidden names
shopt -s nullglob dotglob

names=( * )    # all names in the current directory
regular_files=()

# separate out regular files into the "regular_files" array
for name in "${names[@]}"; do
    # the -L test is true for symbolic links, we want to skip these
    if [[ -f $name ]] && [[ ! -L $name ]]; then
        regular_files+=( "$name" )
    fi
done

printf 'There are %d names (%d regular files)\n' "${#names[@]}" "${#regular_files[@]}"
printf 'The regular files are:\n'
printf '\t%s\n' "${regular_files[@]}"

또는 zsh,

#!/bin/zsh

# "ND" corresponds to setting nullglob and dotglob for the pattern
names=( *(ND) )
regular_files=( *(.ND) )   # "." selects only regular files

printf 'There are %d names (%d regular files)\n' "${#names[@]}" "${#regular_files[@]}"
printf 'The regular files are:\n'
printf '\t%s\n' "${regular_files[@]}"

관련 정보