私はLinuxを使用していますが、それは私にとって新しいものです。シェルスクリプトを作成しましたcountfiledirs
。特定のディレクトリにあるファイルとディレクトリの数を知りたいです。
私のコードは次のとおりです
#!/bin/bash
echo "total directories:" `find . -type d | wc -l`
echo "total files:" `find . -type f | wc -l`
このコマンドを実行すると、次のように表示されます。./countfiledirs
total directories: 148
total files: 255
このコマンドを使用すると、どのくらいのディレクトリとファイルがあるかを知りたいと思います./countfiledirs /usr/share
。
ベストアンサー1
wc -l
ファイルとディレクトリの名前には改行文字を含めることができるため、今のように「ただ」使用することはできません。
引数を受け入れ、ファイル数とディレクトリ数を繰り返し計算するスクリプトが必要な場合は、次のようにします。
#!/bin/bash
echo -n 'total directories:'; find "$1" -type d -printf \\n | wc -l
echo -n 'total files:'; find "$1" -type f -printf \\n | wc -l
次に、ディレクトリをコマンドライン引数として指定してスクリプトを呼び出します。
./your_script_name /home/e_g_your_home_dir.
簡単に言えば、上記はディレクトリですが(ディレクトリ自体を「ディレクトリ」と見なさない限り)、wc -l
NULで終わる「行」を処理し、次を使用できるものに置き換えることもできます。-print0
#!/bin/bash
echo -n 'total directories:'; find "$1" -type d -print0 | python -c "import sys; print len(sys.stdin.read().split('\0'))-2"
echo -n 'total files:'; find "$1" -type f -print0 | python -c "import sys; print len(sys.stdin.read().split('\0'))-1"
この操作を繰り返し実行したくない場合は、(指定したディレクトリのファイル/ディレクトリを計算せずに指定したディレクトリのファイル/ディレクトリのみを計算する)、引数の後に追加する必要があり-maxdepth 1
ます$1
。