![フォルダ内のファイル数を返す方法の提案[重複]](https://linux33.com/image/64522/%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E5%86%85%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%95%B0%E3%82%92%E8%BF%94%E3%81%99%E6%96%B9%E6%B3%95%E3%81%AE%E6%8F%90%E6%A1%88%5B%E9%87%8D%E8%A4%87%5D.png)
ユーザーにフォルダ名を要求し、そのフォルダに見つかったファイルの数を返すスクリプトを作成します。フォルダが存在しない場合は、画面にエラーメッセージが表示されます。
この質問の最初の部分を見てみましたが、フォルダ内のファイル数を保存するための変数を作成する必要があることを知っています。見つかったファイルの数を返す方法がブロックされました。この問題をどのように解決できるかについての提案はありますか?私は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を引く必要があります..
。