2017-07-13 5 views
0

私はコマンドを見つけるUNIXでUNIXの正規表現を使用する必要があります。Unixの正規表現

検索 "/ホーム/ユーザー/ somePath /" -maxdepth 1! -regex "/ home/user/somePath/someUnwantedPath"! -regex 「/ホーム/ユーザー/ somePath/someMoreUnwantedPath」

これは動作しますが、不要なパスがほんの数よりもあるので、私は単一のものに正規表現を最適化する必要があります。

答えて

1

私はあなたが交互にそれを行うことができると思います。

/home/user/somePath/(someUnwantedPath|someMoreUnwantedPath) 

検索 "/ホーム/ユーザー/ somePath /" -maxdepth 1! -regex「/ホーム/ユーザー/ somePath /(someUnwantedPath | someMoreUnwantedPath)」

だけ交代の区切り文字として新しい|で始まる括弧で囲まれたグループの最後の最後でより多くのパスを追加します。私。 |AnotherUnwantedPath

編集

私は、「Windowsの男」ので、私はUnixのとその慣れていないんだけど、私はBUWでそれを試してみたかった、そしてあなたが正規表現をエスケープする必要が表示されますメタキャラクターだから私は、正しい答えは

/home/user/somePath/\(someUnwantedPath\|someMoreUnwantedPath\)/.* 

検索 "/ホーム/ユーザー/ somePath /" -maxdepth 1でなければなりませんね! -regex「/home/user/somePath/\(someUnwantedPath\|someMoreUnwantedPath\)/.*」

+0

と私はsomeUnwantedPathのサブディレクトリをいないたくない場合は(もしあればサブディレクトリを含みます。)含まれていると、どのようにすることができますか? –

+0

不要なパスのすべてのファイル/ディレクトリを無視するように答えを更新しました。単に '/.*'を追加するだけです。 – ClasG

0

あなたはそれをきれいにするために正規表現の代わりにgrep -v -fを使用することができます。代替(|)演算子が除外されるすべてのファイルをダウンリストでなければならないファイルを除外する多くのUNIX systems.Yourでは動作しません

cat excl_files.txt 
/home/user/somePath/someUnwantedPath1 
/home/user/somePath/someUnwantedPath2 
/home/user/somePath/someUnwantedPath3 
.. 
/home/user/somePath/someUnwantedPathn 

find "/home/user/somePath/" -maxdepth 1 | grep -v -f excl_files.txt