lsエイリアスの非表示ファイル(ドットファイル)のみを表示する


43

私はコマンドを使用しています

ls -a | grep '^\.'

隠しファイルのみを表示するため。行を追加しました

alias hidden='ls -a | grep '^\.'' # show only hidden files

.bash_aliasesファイル

しかし、これは機能しません。おそらく'性格の問題でしょう。

正しいエイリアスの作成を手伝ってもらえますか?


さらに複雑な例では、単一引用符から二重引用符に切り替える必要はほとんどありません。これは、引用符を互いに突き合わせるだけで実行できます。この例では、'ls -a | grep '"'"'^\.'"'"'ひどいように見えます(この例では、どちらかのペアの二重引用符を交換するだけなので、まったく不要です)が、非常にまれな場合に役立ちます。-Cフラグが必要な場合もあります(複数列の出力を強制します)。この画像を参照imgur.com/a/VIVFP-
ディラン

回答:


27

内側の二重引用符を二重引用符で囲む:

alias hidden='ls -a | grep "^\."'

または、外側の二重引用符を二重引用符にします。

alias hidden="ls -a | grep '^\.'"

または、すべての引用符を二重引用符にして、内側のペアをエスケープします。

alias hidden="ls -a | grep \"^\.\""

または、それを関数にして、呼び出すときにいくつかの引数を渡すことができます:

hidden() { ls -a "$@" | grep '^\.'; }

90

シェルにドットファイルを一覧ls表示させ、ディレクトリを参照しないように指示します。

ls -d .*

6
これには、grepベースのアプローチとは異なり、複数列のリストを許可するという利点があります。
アルコール14年

ただし、ディレクトリも表示されます(前述のとおり)。そのままにしてファイルのみを表示する方法はありますか?
honzajde

@honzajde質問はディレクトリを除外するように要求しませんでした。ディレクトリを除外する場合は、ls -d .* | grep -v '^d'or を使用できます(zshのみ)print -lr .*(.)
Gilles 'SO- stop being evil'

Ubuntu 16.04
Andrew_1510

9
ls -Ad .* #This will list all the hidden files & directories while retaining the color & formatting

または

同じエイリアスを作成するには:

alias lh='ls -Ad .*'

または

同じことがgrepコマンドとパイプ演算子を介して実行できます。ただし、色と書式設定が失われます。

ls -a|grep "^\." 

または

エイリアス経由:

alias lh='ls -a|grep "^\."'

4

二重引用符を使用できます。

alias hidden="ls -a | grep '^\.'"

または、単一引用符で囲まれた文字列を連結します

alias hidden='ls -a | grep '\''^\.'\'

またはすべての内部引用符を削除します

alias hidden='ls -a | grep ^\\.'

2

記録としては、ls -a2つ(場合によってはそれ以上の列)が印刷されるため、これは私には機能しないようです。-1すべてのファイルが独自の行にあることを確認するオプションを使用することをお勧めします。このようなもの:

alias hidden='ls -a1 | grep "^\."'

ls -a | catまだ2列で出力しようとしました。GNU lsではなくSolarisを使用していることに言及する必要があります。たぶんそれが理由です。すべての場合において、-1ソリューションは完璧に機能し、私のハック的な回避策よりもはるかにエレガントです。回答を更新しています。
ラーム

おそらくこの議論を逃しましたが、何かがうまくいかない場合はこちらをご覧ください。
-xralf

1

少し複雑にしますが、解析はls避けます

llsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -ls; }

lsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -print; }

2つのシェル関数はfind、現在のディレクトリまたはコマンドラインで指定されたディレクトリにあるすべての非表示の通常ファイルのリストを生成するために使用します。

このllsh関数は、「より長いリスト」を生成しますが、これはのようにわずかに冗長になりますがls -l、のlshような単一列のリストを生成しますls -1


0
find . -type f -name ".*"

または

find . -type f -name ".*" | while read file; do basename $file; done

こんにちは!それがどのように機能するかを詳細に説明することによって、またあなたの意見で質問に答える理由を述べることによって、あなたの答えを改善することができます。
dhag

0
# add it to ~/.bashrc

    hidden() {  # lists hidden files and directories
        find . -maxdepth 1 -name '.?*' -exec ls --color -d {} \;
        }

    hiddenfiles() { # lists hidden files
        find . -maxdepth 1 -type f -name '.?*' -exec ls --color -d {} \;
        }

    hiddendirs() { # lists directories
        find . -maxdepth 1 -type d -name '.?*' -exec ls --color -d {} \;
        }

-1

あなたのlsサポートは-Aですか?からman ls

    -a, --all
          do not ignore entries starting with .

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

$ ls --version
ls (GNU coreutils) 8.5
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  
Written by Richard M. Stallman and David MacKenzie.

はい、onlyできますが、隠しファイルが必要でした。
-xralf

ls -A -1 -d -F .* | egrep -v '/$'
ワルティンレーター

-3

以下のコマンドを入力するだけで、上記のものと混同しないでください。

ls -A -1 -d -F .* | egrep -v '/$'

OPは、エイリアスを適切に記述する方法を要求したと思います。
カウンター

1
それは、彼/彼女の答えに対するウォルチネーターのコメントの単なるコピーです。この回答が役立つためには、これらの特定のlsフラグとegrepコマンドが質問に回答する方法と理由を説明する必要があります。
アンソニーG-モニカの正義

-3
ls -lart | sed -n "/ \.[A-Za-z0-9][A-Za-z0-9]*/p"

2
あなたの答えを明確にしてください、1行のコードは良い答えとしてカウントされません
ロミオニノフ

要件により、彼は隠しファイルのみをリストする必要があります。だから私はls -lartで隠しファイルを含むすべてのファイルをリストしています。次に、ドット(。)で始まるファイルを表示するために正規表現を使用しました。私はこのようなアウトプットを持っています。
シャイレッシュチャンデリヤ

[g906016 @ hklu2574881:[PTA]〜] $ ls -lart | sed -n "/ \。[A-Za-z0-9] [A-Za-z0-9] * / p" -rw-r--r-- 1 g906016 g906016 658 2016年12月29日.zshrc -rw- r--r-- 1 g906016 g906016 171 2016年12月29日.kshrc -rw ------- 1 g906016 g906016 2016年12月29日.k5login -rw-r--r-- 1 g906016 g906016 176 2016年12月29日。 bash_profile -rw-r--r-- 1 g906016 g906016 2016年12月29日.bash_logout -rwxr-xr-x 1 g906016 g906016 0 2016年12月29日.dir_colors drwxr-x --- 3 g906016 g906016 4096 2016年12月29日.subversion
シャイレッシュチャンデリヤ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.