Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題21

問題21 条件がややこしいファイルの一覧の生成

問題のファイルは

https://github.com/shellgei/shellgei160

からダウンロードできる。

ややこしい問題だった。

dir_a直下のファイル

dir_b直下のファイル

dir_c内のファイルすべて

を出力する問題だった。てっきり Bash の機能だけを使って解くものだと思い込んでしまったせいで全くできなかった。

正解は

shopt -s globstar

を実行した後

echo dir_a/* dir_b/* dir_c/** | grep -o "[^ ]*[0-9]"

とすればいい。grep で [^ ]* としているところを .* としてしまうと、echo の出力全体が一行と認識されてしまい、改行されて出力されない。

find -type f を用いても同じことができる。