現在のディレクトリ(サブディレクトリと隠しファイルを含む)にあるpdfファイルとtexファイルの数を見つけるために、次のスクリプトを作成しました。以下のコードは、レベル2の下のサブディレクトリにpdfファイルの数を見つけることができますが、サブディレクトリがないことを示しています。
#!/bin/bash
touch t.txt
k=`find -type d |wc -l`
k1=`expr $k - 1`
echo $k1
message1="*.pdf *.tex"
count=`ls -al $message1|wc -l`
find -type d > t.txt
i=2
while [ $i -le $k ]
do
kd=`head -$i t.txt|tail -1`
echo $kd
touch $kd/t.txt
cp t.txt $kd/t.txt
i=`expr $i + 1`
done
i=2
while [ $i -le $k ]
do
nd=`head -$i t.txt|tail -1`
set -x
echo $nd
set +x
cd $nd
j=`ls -al $message1|wc -l`
count=`expr $count + $j`
i=`expr $i + 1`
done
#set +x
echo $count
ベストアンサー1
純粋な方法でこれを行うことができますbash
。
shopt -s nullglob dotglob globstar
set -- **/*.pdf **/*.tex
echo "$#"
set
現在のシェルの位置パラメータをglobの結果に設定します。$#
次に、これらのパラメーターセットの数を検索します。
もしあなたならする位置パラメータを使用すると(クエリの場合はスクリプトとは異なり)、配列で同じ操作を実行できます。
shopt -s nullglob dotglob globstar
files=(**/*.pdf **/*.tex)
echo "${#files[@]}"