フォルダ内のファイル数を返す方法の提案[重複]

フォルダ内のファイル数を返す方法の提案[重複]

ユーザーにフォルダ名を要求し、そのフォルダに見つかったファイルの数を返すスクリプトを作成します。フォルダが存在しない場合は、画面にエラーメッセージが表示されます。

この質問の最初の部分を見てみましたが、フォルダ内のファイル数を保存するための変数を作成する必要があることを知っています。見つかったファイルの数を返す方法がブロックされました。この問題をどのように解決できるかについての提案はありますか?私はlsそのコマンドが使用されることを知っています。

clear
echo -e "Option #11: Acquire the number of files within a particular folder\n\n"
echo -e "Enter in the Folder Name below\n"
read foldername
answer=$(grep $foldername)
if [ "$answer" = "" ]
then
clear
echo -e "\n No Such Folder Exists"
else

ベストアンサー1

この問題を解決する方法はいくつかあります。 1つ目はbash配列の使用です。

shopt -s nullglob
if [[ -d $foldername ]]; then
  files=("$foldername"/*)
  answer="${#files[@]}"
else
  printf '%s does not exist\n' "$foldername"
fi

シェルが配列をサポートしていない場合は、回数を繰り返すことができます。

count=0
for f in "$foldername"/*; do
  count=$((count + 1))
done

別のオプションはを使用することですls。これは、すべての可能なファイル名を処理できないため、最も信頼性の低い方法です。

count=$(( $(ls -al | wc -l) - 2))

ls -al.includeとの出力に2を引く必要があります..

おすすめ記事