2016-11-17 6 views
-6

私が探しているディレクトリの絶対パスになるコマンドが必要です。単一のディレクトリを見つけるためのLinuxコマンド

条件:親ディレクトリには、私が探しているディレクトリ以外のディレクトリは含まれていないはずです。

例:

のは、私は以下のディレクトリ構造を持っていると私はGHIディレクトリを探していましょう:

  1. /ホーム/ユーザー/ ABC/XYZ/
  2. /ホーム/ユーザー/ ABC/PQR/GHI
  3. /ホーム/ユーザー/ LMN/GHI/
  4. /ホーム/ユーザー/ LMN/DEF/

私は、コマンドを実行すると今、出力は私を与える必要があります。

- /ホーム/ユーザー/ ABC/PQR/GHI GHIは、親ディレクトリのPQR中に存在する唯一のサブディレクトリであるとして。

答えて

1
find ~ -type d -maxdepth 2 -depth 2 | awk -F/ '{print $5, $4}' \ 
    | sort -k2 | uniq -u -f1 | awk '{print $2"/"$1}' 

どのように動作しますか?まず、すべてのdepth-2ディレクトリを出力し、ABC/XYZからXYZ ABCにそれらを反転します。その後、最初のフィールド(例ではXYZ)を無視して、ユニークなものだけを取ります。ユニークなレコードは、ABC/XYZのように元の順序に戻されます。

空白を含むディレクトリ名は正しく処理されません。これは読者のための練習です。

+3

私はOPがどのように動作するか気にしません。彼はちょうど命令を必要とする。 – hek2mgl

+1

@ hek2mgl:ありがとうございます。だから、私は本当のコードの代わりにこのシェルの怪物を書いてうれしかった! –

+1

@JohnZwinck:次のようにコマンドを変更しました。 - find ./ -maxdepth 4 -type d | awk -F/'{print $ 5、$ 4、$ 3}' |ソート-k2 |ユニーク-u -f1 | awk '{プリント$ 2 "/" $ 1} "これは私の要件のために働いた、ありがとう.. !! – Huzaifa

関連する問題