2016-10-06 14 views
0

私は..を削除したいと思います。 ls出力のエントリ。どのようにこれまで、どうすればlsの出力で./と../を取り除くことができますか?

ls . | sed '/^\.\./d;/^\.\//d' 

を実行すると、私のために動作しません(./はまだここにいる)と私は理由を理解することはできません。最初の場所でこれらのエントリを印刷し、またで始まる名前の他のものはありませんデフォルトlsでは

-A, --almost-all 
       do not list implied . and .. 
+0

ところで、['ls'はプログラム的な使用のための適切なツールではありません](http://mywiki.wooledge.org/ParsingLs);興味のあるファイル名に遭遇した場合や、テストした場所とは異なる動作をしているプラ​​ットフォームで実行された場合、バグが発生します。対照的に、インタラクティブに使用しようとしているのであれば、https://superuser.com/はそれらを開発するのではなくツールを使用することについての質問に最適です。 –

+1

'ls .'は' .'のエントリを表示しません。または '..'です。 'ls'のエイリアスはありますか?あなたのOSは何ですか? –

答えて

3

lsは、まさにこの目的のために-Aオプションがあります.。また、ディレクトリ名の後ろにスラッシュが付きません。あなたの普通のlsコマンドがあなたのエイリアス(おそらく)またはあなたの環境内のその名前のシェル関数を持っていることを示唆していることを示唆しています。シェル環境で現在のエイリアスを表示するには、コマンドalias -pを使用します。

いずれにしても、絶対パスを使用してエイリアス/機能を削除せずに回避できます。/bin/lsエイリアスの場合、少なくとも-Aオプションを指定して...を抑制することができますが、その(非標準)オプションがGNUとBSDの意味でサポートされている場合は、lsは他を抑制しませんドットファイル(正確にはあなたが望むものかもしれません)。

+1

特に、これはPOSIXによって保証されていないBSD拡張です。 –

+1

@CharlesDuffy GNUシステムでも利用できます。 – heemayl

+0

"POSIXによって保証されていない"とは、操作上のテキストを意図したものです。はい、GNUとBSD拡張の間にはたくさんの相互に受け入れがあります。 –

1

ls -A 

man lsから:

関連する問題