2

ディレクトリを再帰的に移動する必要があります。最初の引数は、開始する必要があるディレクトリである必要があり、2 番目の引数は、ファイルの名前を記述する正規表現です。

元。./myscript.sh directory "regex"

スクリプトはディレクトリとファイルを再帰的に処理しますが、 wc -l を使用して、正規表現で記述されたファイル内の行をカウントする必要があります。

-exec で find を使用するにはどうすればよいですか? または、それを行う他の方法があるのでしょうか?助けてください。

ありがとう

4

1 に答える 1

1

はい、使用できますfind

$ find DIR -iname "regex" -type f -exec wc -l '{}' \; 

または、すべてのファイルの合計行数をカウントする場合は、次のようにします。

$ find DIR -iname "regex" -type f -exec wc -l '{}' \; | awk '{ SUM += $1 } END { print SUM }'

スクリプトは次のようになります。

#!/bin/bash

# $1 - name of the directory - first argument
# $2 - regex - second argument

if [ $# -lt 2 ]; then
  echo Usage: ./myscript.sh DIR "REGEX"
  exit
fi

find "$1" -iname "$2" -type f -exec wc -l '{}' \;

編集: - より洗練された正規表現が必要な場合は、@sudo_Oの回答の代わりに-regextype posix-extendedandを使用してください。-regex-iname

于 2013-03-28T09:35:23.687 に答える