私はシェルスクリプトの初心者です。
以下のコマンドを実行すると、次のように出力されます。
$ cd demo
$ ls
dir1 dir2 dir3 dir4 dir5
$
$find . -mtime -2 -type f -regextype posix-egrep -regex ".*/(dir1|dir2|dir3|dir4|dir5)/.+" -exec ls {} \; > /tmp/basefileslist
./dir1/demo1.sh
./dir2/demo2.sh
./dir3/demo3.sh
./dir4/demo4.sh
./dir5/demo5.sh
いいえを受け取るべきですか./
?以下のような出力が必要です。
dir1/demo1.sh
dir2/demo2.sh
dir3/demo3.sh
dir4/demo4.sh
dir5/demo5.sh
ベストアンサー1
in findの出力はオプションの前の引数./
から来ます。パラメータを.
変更すると、.
焦点を合わせた出力部分が変わります。あなたの例を考えると、要求された出力が生成されます。
find dir1 dir2 dir3 dir4 dir5 -mtime -2 -type f -exec ls {} \;
正規表現オプションは、サブディレクトリパラメータを指定する操作と重複すると推測されるため、除外しました。出力は次のとおりです
dir1/demo1.sh
dir2/demo2.sh
dir3/demo3.sh
dir4/demo4.sh
dir5/demo5.sh
特定のテストケース(一致する5つのサブディレクトリのみ)では、サブディレクトリのリストを単純なシェルglobに減らすことができます。
find dir[1-5] -mtime -2 -type f -exec ls {} \;
またはより短い球:
find dir? -mtime -2 -type f -exec ls {} \;
多くのユースケースでは、これらの必須ファイルは使用またはfind dir1 dir2 dir3 dir4 dir5
検出されません。find dir?
しかし、私の答えの目的は、オプションの前のパラメータが検索出力のパスにどのように影響するかを示すことです。