4

次の出力をカスタマイズしたいと思います。

du -hs *

例:出力:

23G    Test1
1.2M   Folder With Spaces
12G    Another Folder With Spaces

問題は、最初の列をキャプチャできることですが、2 番目の列にはスペースが含まれている可能性があるため、出力は最初の単語のみをキャプチャします。含まれている 2 番目の列のスペースをキャプチャする方法や、その行の残りのコンテンツを返す方法はありますか?

du -hs * | awk '{print $1 " " $2;}'

上記はこれを返します:

23G Test1
1.2M Folder
12G Another

EDIT:解決策は、 -F を追加してタブ区切り文字を指定することです:

du -hs * | awk -F'\t' '{print $1 " " $2;}'

タブは、ファイル/フォルダーでも有効な文字です。私の場合、これは決して問題にはなりません。

4

2 に答える 2

2

duファイル名にタブや改行を含めてはいけませんが、タブを使用するため、単純に使用できます(cutデフォルトの区切り文字はタブです)。

du -hs * | cut -f1  # First field
du -hs * | cut -f2  # Second field
du -hs * | cut -f2-  # All fields >= 2 (if there are tabs in the filename)

さらに処理する必要がない限りawk、これで十分です。

于 2015-07-30T22:41:13.820 に答える