現在、いくつかのbashスクリプトを学習しており、特定のディレクトリ内のすべてのファイルをリストし、ファイルまたはディレクトリであるかどうかを問う問題があります。私が抱えている問題は、現在のディレクトリだけを取得するか、またはディレクトリを指定すると、それがディレクトリであると言うことになります。/home/user/shell_scriptsが返すshell_sciptsは、その中に含まれるファイルではなくディレクトリです。 これは私がこれまで持っているものです。シェル指定されたディレクトリ内のファイルとそのファイルまたはディレクトリをリストするスクリプト
dir=$dir
for file in $dir; do
if [[ -d $file ]]; then
echo "$file is a directory"
if [[ -f $file ]]; then
echo "$file is a regular file"
fi
done
非常に多くのファイル(コマンドラインが長すぎます)があると、これが壊れる可能性があります。 – user1934428
はい、私はこのアプローチを非常に多数のファイル(> 10^5)に使用していましたが、問題はありませんでした。私は 'for' /' do'/'done'アプローチを取り除き、できるだけ効率的な' ls'や 'find'コマンドを直接使用したいと思っています。 OPの質問。それに応じて更新します。 –
空白やその他の特殊文字を含むファイル名ではうまく動作しません。 – Biffen