私が見つけたのは簡単なようです。
find . -type f
プログラムパラメータ行に基づいて特定のファイルまたはディレクトリを除外する方法を見つけようとしています。
bash myscript.sh -excl a b c d
または、オプションa, b, c, d
の次の引数は、除外したい特定のexcl
ファイルまたはディレクトリを参照する正規表現です。
したがって、プログラムを次のように呼び出すと:
bash myscript.sh -excl *.sh somedir
私はsomedirディレクトリと拡張子を持つすべてのファイルを無視したいと思います.sh
。バッシュでこれは可能ですか?
ベストアンサー1
配列を使用したbash
ソリューション:
#!/bin/bash
declare -a find_arguments=( -type f )
for arg; do
find_arguments+=( ! -name "$arg" )
done
find . "${find_arguments[@]}"
本当に正規表現が必要な場合は、そうします。-name
しかし、-regex
例を見ると、ワイルドカードが欲しいようです。 (POSIXではありませんが、-regex
GNUではサポートされていますfind
。)
デモ
touch {a,b,c}{x,y,z}
./myscript.sh 'a*' '*z'
出力:
./bx
./by
./cx
./cy
コマンドラインの解析-excl
などは、スクリプトのコマンドラインオプションが一般的にどのように見えるか明確に明らかにしていないため、省略しました。そうであれば、-excl
簡単に確認してください([[ "$1" = -excl ]]
)shift
。