web-dev-qa-db-ja.com

*をディレクトリ内の隠しファイルと照合する方法

指定されたディレクトリ内の隠しファイルを照合する方法

例えば

以下のコマンドを実行すると、隠しファイルの結果が表示されません。

 du -b maybehere*/*

使用する代わりに単一のコマンドを使用してこれを簡単にする方法

du -b maybehere*/.* maybehere*/*

多分ここに2回タイプする必要があるので。

23
vidhan

ブレース拡張を利用します。

du -b maybehere*/{*,.[^.],.??*}

または代わりに

du -b maybehere*/{,.[^.],..?}*

この背後にある論理はおそらく明白ではないので、ここに説明があります:

  • *は非表示ではないすべてのファイルに一致します
  • .[^.]は、単一のドットで始まり、その後にドットではない名前が付いているファイルに一致します。最初の形式では2文字のファイル名のみです。
  • .??*は、3文字以上の隠しファイルに一致します
  • ..?*は上記と同じですが、2番目の文字はドットでなければなりません

全体のポイントは、現在および親ディレクトリ(.および..)へのハードリンクを除外することですが、すべての通常のファイルをそれぞれの方法で含めるようにします一度だけカウントされます!

たとえば、最も簡単なのは、

du -b maybehere*/{.,}*

つまり、リストにはドット.と "nothing"(,と終了}の間に何もない)が含まれているため、すべての隠しファイル(ドットで始まる)とすべての非-隠しファイル(「nothing」から始まる)は一致します。問題は、これが...にも一致することであり、これはおそらくあなたが望むものではないので、どういうわけか除外する必要があります。


ブレースの拡張についての最後の言葉。

中かっこ展開 は、少ない文字数を書き込むことにより、コマンドラインにより多くのファイル/文字列/何でも含めることができるメカニズムです。構文は{Word1,Word2,...}です。つまり、{で始まり}で終わるコンマ区切りの文字列のリストです。 bashマニュアルは、非常に基本的であると同時に非常に一般的な使用例を示しています。

$ echo a{b,c,d}e
abe ace ade
24
jimmij

既にGNU特定の構文(_-b_)を使用しているため):

_du -abd1 maybehere*/
_

このように、_maybehere*_ディレクトリ内のファイルを一覧表示するのはduです(ドットファイルを除外しません)。 _-d1_は、ディスク使用量のレポートを1レベル下に制限します(_-a_のある非ディレクトリを含む)。

それ以外の場合、グロブに隠しファイル(_._および_.._を除く)を含めるには、各シェルに独自の構文があります。

  • zsh

    _du -b maybehere*/*(D)
    _
  • _ksh93_:

    _(FIGNORE='@(.|..)'; du -b maybehere*/*)
    _
  • bash

    _(shopt -s dotglob; du -b maybehere*/*)
    _
  • tcsh

    _(set globdot; du -b maybehere*/*)
    _
  • yash

    _(set -o dot-glob; du -b maybehere*/*)
    _

    ただし、readdir()の結果にそれらを含むシステムでは_._および_.._が含まれているため、ほとんど使用できません。

15

別のオプションが利用可能です ここ

du -sm .[!.]* *
9
Fábio

直接シェルではありませんが、このように限られた深さで検索を使用できます

find maybehere -maxdepth 1 -exec du -sh {} \;
1
k3a

隠しディレクトリを一覧表示するか、隠しディレクトリを操作する場合は、コスタスが言ったように、

du -b maybehere*/.*

これにより、隠しファイルと隠しディレクトリを操作できます。隠しディレクトリのみが必要な場合は、それを指定できます

du -b maybehere*/.*/

0
SailorCire