私はこのコマンドを見つけました
du -xh / | grep -P "G\t"
-P
私はスイッチgrep
とその機能に興味があります。そして、もしこの"G\t"
部分がどんな役割を果たしているのか説明していただける方ですか?
du -xh
コマンドの基本を説明しないでくださいgrep
。
$ du -xh / | grep -P "G\t"
5.1G /var/oracle/XE/datafile
5.1G /var/oracle/XE
5.1G /var/oracle
1.1G /var/lib
6.9G /var
1.9G /opt/softwareag/webMethods/install/fix
1.9G /opt/softwareag/webMethods/install
1.2G /opt/softwareag/webMethods/Designer
1.3G /opt/softwareag/webMethods/common
1.9G /opt/softwareag/webMethods/CCE
1.2G /opt/softwareag/webMethods/IntegrationServer/instances/default/replicate/salvage
3.0G /opt/softwareag/webMethods/IntegrationServer/instances/default/replicate
2.3G /opt/softwareag/webMethods/IntegrationServer/instances/default/packages
5.5G /opt/softwareag/webMethods/IntegrationServer/instances/default
5.5G /opt/softwareag/webMethods/IntegrationServer/instances
5.7G /opt/softwareag/webMethods/IntegrationServer
16G /opt/softwareag/webMethods
16G /opt/softwareag
16G /opt
1.1G /usr/share
3.0G /usr
11G /u01/app/oracle/oradata/XE
11G /u01/app/oracle/oradata
12G /u01/app/oracle
12G /u01/app
12G /u01
39G /
答え1
このマニュアルに記載されているように、grep
PCRE -P
(Perl Compatible Regular Expressions)の使用は許可されています。
PCRE式はタブ文字とG\t
一致します。G
その結果、サイズがGB単位(または名前がパターンと一致する)のディレクトリリストのみを取得できます。
より安定した代替パイプは、G
タブで区切られた最初の列の終わりとのみ一致します。
... | awk -F '\t' '$1 ~ /G$/'
また、ギガバイト未満または大きい単位で項目を表示するには、に変更しG
ます[KMGTPEZY]
。
答え2
-P
デフォルトエンジンではなく、Perl準拠の正規表現エンジンを有効にします。あなたの例では、\t
タブ文字として扱う必要があります。
それ以外の場合は正常grep
と見なされます。 PS:マニュアルページに基づいて簡単に把握できます。t
\
オプション
<...>
一致者の選択
<...>
-P
、--perl-regexp
パターンをPerl互換正規表現(PCRE)として解釈します。これは実験的です。
grep -P
実装されていない機能について警告できます。