ディレクトリ以外のファイルを繰り返します。

ディレクトリ以外のファイルを繰り返します。

現在のディレクトリ(サブディレクトリを除く)のすべてのファイルに対して特定のタスクを実行するには、スクリプトが必要です。

たとえば、現在のパスに5つのファイルがあり、そのうちの1つがフォルダ(サブディレクトリ)です。私のスクリプトは、そのスクリプトを実行するときに引数として指定されたコマンドを有効にする必要があります。つまり、「bash script wc -w」は、現在のディレクトリにある各ファイルの単語数を指定する必要がありますが、フォルダには指定しないでください。したがって、出力には「/sub/dir: is a ディレクトリ」行は含まれません。

私の現在のスクリプト:

#!/bin/bash
dir=`pwd`
for file in $dir/*
do
    $* $file
done

ループされたディレクトリを除外する必要がありますが、方法がわかりません。

ベストアンサー1

#!/bin/bash -

for file in "$dir"/*
do
  if [ ! -d "$file" ]; then
      "$@" "$file"
  fi
done

また、シンボリックリンクタイプのファイルとシンボリックリンクがディレクトリタイプ(おそらく望むものかもしれません)として識別されるファイルは除外されます。

代替案(コメント)では、ファイルを確認してください。

for file in "$dir"/*
do
  if [ -f "$file" ]; then
      "$@" "$file"
  fi
done

おすすめ記事