特定のディレクトリでファイルを所有する各ユーザーと、それらが所有するファイルとディレクトリの数のリストを作成します。

特定のディレクトリでファイルを所有する各ユーザーと、それらが所有するファイルとディレクトリの数のリストを作成します。

コードを理解できません: ls -l /projects/ghosttrail | tail -n +2 | sed 's/\s\s*/ /g' | cut -d ' ' -f 3 | sort | uniq -c。各段階で何が起こっているのかを詳しく説明できる人はいますか?各コマンドを1つずつ追加して直接実行できることはわかっていますが、コードが機能しないため、末尾の+2パラメータの意味やsedコマンドを渡す方法、および実行しない理由など、いくつかのことを理解できません。 't take cut コマンドの 4 番目の列です。

源泉:https://ryanstutorials.net/linuxtutorial/piping.php

答え1

前のコマンドの出力が次のコマンドの入力として使用されるパイプラインステップ:

  1. ls -l /projects/ghosttrailディレクトリの内容(ドットで始まらない)と詳細を一覧表示します。

  2. tail -n +2出力はライン2から始まります(最初のラインを削除)。いいえ+tail最後の2行(行数で指定-n、デフォルトは10)が表示されます。

  3. sed 's/\s\s*/ /g'複数の連続したスペースを単一のスペースに置き換えます。

  4. cut -d ' ' -f 33番目のフィールド(ユーザー名)を取得します。

  5. sort | uniq -c一意の行を並べ替えて計算します。これは、で説明されているように隣接しないと重複行が検出されないためsortに使用されます。uniqman uniq

GNUを使用して同じ結果を得る別の方法find:

find . -maxdepth 1 -not -name '.*' -printf '%u\n' | sort | uniq

find-printf '%u\n'作業ディレクトリにユーザー名を一覧表示します(オプション)。-maxdepth 1サブディレクトリの検索を防ぎます。-not -name '.*'ドットファイルは含まれません。sort | uniq元の例と同じ目的で使用されます。

関連情報