2017-02-19 1 views
2

私がしようとしていることは説明するのが難しいです。私は、ディレクトリにたくさんの異なるユーザーがそれに資料を提出しているとしましょう。私は誰からも拡張子 ".foo"のファイルを求めます。それから、私は誰からも拡張子 ".bar"のファイルを要求しました。私は.fooを提出したすべての人の名前のリストを望んでいますが、.barを提出しませんでした。ディレクトリに1つのファイルがありますが、別のファイルがないファイル所有者を見つける方法

私はあなたが何とかgrepを2回使用し、grep内に所有者名を含めると仮定していますが、それは混乱するところです。私は1つのコマンドパイプラインでこれをすべて実行しようとしています。

これは私が名を取得するために何をしようとしているです:

find . -type f -printf "%u %f\n" | grep '%u .foo' | grep -v '%u .bar' 

ここで私の二つの問題が%uprintfから名前を付けて除くバーの部分がないことをしないということですgrep fooに依存しています。これは、fooを所有するすべての人々の名前を列挙し、barを提出した人の名前を削除することを意味します。要求ごととして

構造:以下のように

|--myDirectory 
    ├── samantha.foo - (owner: samantha warren) 
    ├── samantha.bar - (owner: samantha warren 
    ├── robert.foo - (owner: robert jones) 
    ├── doug.foo  - (owner: doug field) 
    ├── doug.bar  - (owner: doug field) 
    ├── emily.foo - (owner: emily smith) 

出力は次のようになります。

robert jones 
emily smith 
+3

複数のユーザーが同じファイル名を同じディレクトリに「提出する」方法はありますか?それぞれ前のものを上書きします。 – kaylum

+1

あなたの問題の詳細を推測させないでください。 http://stackoverflow.com/questions/39338196/extract-zip-file-generated-in-windows-using-python-2-7-and-zipfile-in-linux(zipファイルVSのインプレースdir /ファイル)をdirs/sub-dirs/filesに関連するQを指定する優れた例として挙げています。あなたのQを編集して、処理すべきでないサンプルファイル/ディレクトリと、処理すべきでないサンプルファイルを組み込み、必要な結果を含めます。がんばろう。 – shellter

+1

良いショー!あなたが答えを得てうれしい。がんばろう。 – shellter

答えて

2

samantha.fooは、Linuxのファイルの所有権の意味でsamanthaに所有されているようにそれは見えません。ここの所有権はあなたのアプリケーション内にあるようです。 -xは完全一致(行全体がパターンに一致しなければならない)とを探し、任意のパターンに一致しないgrep

# Get all files with extensions foo and bar 
foos=(*.foo) 
bars=(*.bar) 
# Strip the extensions to get the usernames 
users_with_foo=("${foos[@]%.foo}") 
users_with_bar=("${bars[@]%.bar}") 
# Filter the usernames. 
grep -vxf <(printf "%s\n" "${users_with_bar[@]}") <(printf "%s\n" "${users_with_foo[@]}") 

-vプリントライン:あなたのファイル名が所有者名が含まれている場合は、あなたのような何かを試すことができます-fは、入力ファイルからパターンを読み取るために使用されます。ここで、「ファイル」はprocess substitution<(...))です。したがって、printfコマンドの出力は、grepのファイルとして提供され、パターンと入力のファイルとして使用されます。

+0

ありがとう、私はそれを1つのコマンドパイプラインに入れるために少し調整しなければならなかったが、間違いなく正しい答えを得た。 printfのフィルタ処理の仕組みを説明できますか? – qiterpot

+0

@qiterpot更新が役立つかどうかを確認してください。 – muru

関連する問題