フォルダ内の複数のテキストファイルに対してコマンドを実行するためにforループを実行するシェルスクリプトがあります。これらのファイルの名前が特定の文字セット(NAなど)で始まるか、ファイルに特殊文字がないか(たとえば、「-」、「_」などのファイル拡張子の前にピリオドがない場合を除く)、テストしたいと思います。ファイルのフルネームをテストする方法を知っていますが、ファイルの一部にこれらの文字が含まれているかどうかをテストする方法や文字と数字のみが含まれています。これらの要件を満たすファイルでのみコマンドを実行するにはどうすればよいですか?私はそれがif文を使用していることを知っていますが、それ以上はわかりません。ワイルドカードや正規表現を使用する場合のようです。
ベストアンサー1
以下のコードを使用すると、「NA」で始まり、英数字のみを含み、「.txt」で終わるテキストファイルに対して特定の操作を実行できます。
for f in /path/to/your/folder/*; do
if [[ ${f##*/} =~ NA[a-zA-Z0-9]*.txt ]]; then
# perform some action on $f
fi
done
ファイルが「N」または「A」で始まるようにするには、次のコマンドを使用します。
for f in /path/to/your/folder/*; do
if [[ ${f##*/} =~ [N,A][a-zA-Z0-9]*.txt ]]; then
# perform some action on $f
fi
done