
通常、ワイルドカード拡張にはドットファイルは含まれません。
% echo *
Applications Desktop Documents Downloads Library Movies Music Pictures Public bin
ドットファイルを明示的に要求すると、次のような結果が得られます。
% echo * .*
Applications Desktop Documents Downloads Library Movies Music Pictures Public bin . .. .CFUserTextEncoding .DS_Store .Trash .adobe .bash_history .cups .gitconfig .gnupg .history .lesshst .netbeans .scanview.cfg .sqlite_history .ssh .swt .systemmodeler .tcshrc .viminfo
しかし、私は返品たとえば、ディレクトリ内の各項目サイズを目的の場所に渡したい場合は、これらの.
項目..
を望ましくありません。現在のディレクトリの内容とdu -s
合計せずに現在のディレクトリの.
すべての内容を提供できるパターンはありますか..
?
私はtcshを使用します。
(「この質問にはすでに回答がある可能性があります。」について上記を参照してください。いいえ、その回答はbashにのみ適用されるため、この質問には回答はありません。)
答え1
tcsh
バージョン 6.17.01 以降の場合:
set globdot
du -s -- *
高齢者と一緒に:
du -s -- * .[^.]* ..?*
(興味深いことに、これはPOSIXシェルとは異なり(およびエミュレーション(オプション))* .[!.]* ..?*
では、ファイルと一致しないパターンがそれ自体ではなくnullに拡張されるため、POSIX対応()よりも優れています。)tcsh
zsh
csh
cshnullglob
基準を使用して検索:
find . ! -name . -prune -exec du -s {} +
GNUには、ディレクトリディスク使用量が報告される深さを制限するオプションがdu
あります。-d
du -ad1
答え2
ls -Aコマンドを使用して登録を無効にできます。と..内部コマンドの置換:
echo "`ls -A`"
答え3
私は通常次を使用します:
du -ks * .[^.]*
このアプローチは矛盾と一致せ.
ず、移植性に優れています。..
答え4
シェルに依存するので、単純な一般的な解決策はありません。
tcshまたはbashの場合:
echo .[^.]*
kshの場合:
echo .*
ただし、Nykakin(..で始まるファイル)の場合は失敗します。
より一般的な答えを得るには、「grep」または「find」を使用してください。例:
ls -a|grep '^\.\(..\|[^\.]\)'
これは私が知っているすべてのシェルでは機能しますが、Nykakinのシェルでは機能しません。他のソリューションが失敗する可能性がある次の特別な場合にも適用されます。
.x
.x.
..x.
つまり、点で始まり、その後に少なくとも2つの文字または点以外の文字が続きます。