ループを使ってディレクトリ内のファイル数をカウントするにはどうすればbashスクリプトを作成できますか?(unix)ループを使ってディレクトリ内のファイル数を数えるスクリプトを書く方法
スクリプトは、ターゲットディレクトリと出力を取る必要があります。中::
ループを使ってディレクトリ内のファイル数をカウントするにはどうすればbashスクリプトを作成できますか?(unix)ループを使ってディレクトリ内のファイル数を数えるスクリプトを書く方法
スクリプトは、ターゲットディレクトリと出力を取る必要があります。中::
#!/bin/bash
counter=0
if [ ! -d "$1" ]
then
printf "%s\n" " $1 is not a directory"
exit 0
fi
directory="$1"
number="${directory##*/}"
number=${#number}
if [ $number -gt 0 ]
then
directory="$directory/"
fi
for line in ${directory}*
do
if [ -d "$line" ]
then
continue
else
counter=$(($counter + 1))
fi
done
printf "%s\n" "Number of files in $directory :: $counter"
訂正: '$ 1/*'の行のために(/は省略され、{}は余計です) 'if [-d" $ line "]'(ファイル名は埋め込み空白を引用して引用する必要があります) – cdarke
私はあなたが示唆した訂正をしましたが、私は{ディレクトリ}を残しました*あなたはそれがスーパーフルーだと思っていますが、それは改善されていると思います。私はまた、スラッシュの存在を確認しました。 –
ファイルの数は、あなたは本当にループを必要としません。以下は、ディレクトリ内のファイルをカウントします:
files=($(ls $1))
echo ${#files[@]}
ファイル名に空白が含まれていると、これは不正確になります。 – cdarke
これはディレクトリも考慮しません。ファイルとして数えられます – codemonkey
私は(GNU)find
とwc
を使用します。
find /path/to/dir -maxdepth 1 -type f -printf '.' | wc -c
上記find
のコマンドは、ディレクトリとwc -c
カウント内のすべてのファイルのためのドットを印刷しますそれらの点。これは、ファイル名に特殊文字(空白と改行を含む)があればうまく動作します。
[シェルスクリプト内のディレクトリ内のファイルの一覧を取得する方法](https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-シェルスクリプト内のディレクトリ) – Nick
"gimme teh codez"のために、この質問をトピックとして閉じようとしています。スタックオーバーフローはコード記述サービスではありません。 – EJoshuaS