
あるディレクトリ内のすべての隠しファイルを一覧表示しようとしていますが、他のディレクトリは一覧表示せずにlsとgrepのみを使用してこれを実行しようとしています。
ls -a | egrep "^\."
これが私が今まで持っているものですが、問題は私が望んでいないときに隠されたディレクトリもリストすることです。
その後、隠しディレクトリを完全に別々に一覧表示したいと思います。
答え1
リストのみ隠しファイル:
ls -ap | grep -v / | grep "^\."
気づく文書これはディレクトリの内容全体ではありません。次の場所に保存されない「Linuxのすべてはファイルです」;)
リストのみ隠しディレクトリ:
ls -ap | grep "^\..*/$"
コメント:
ls -ap
/
隠しディレクトリを含む現在のディレクトリのすべてのエントリを一覧表示し、ディレクトリの末尾に追加します。grep -v /
grep /
ディレクトリが含まれないように結果を反転します。"^\..*/$"
.
で始まり終わるすべての項目と一致します/
。- 2番目の部分の結果からディレクトリを除外するには、forの代わりに
.
オプションを使用するか、正規表現を使用したい場合は代わりに使用できます。..
-A
-a
ls
"^\.[^.]+/$"
"^\..*/$"
楽しくお過ごしください!
答え2
および..を含む現在のディレクトリの隠しファイルとディレクトリを一覧表示します。
echo .*
現在のディレクトリとそのサブディレクトリにある隠しファイルとディレクトリを繰り返し一覧表示します。
find . -name '.*'
結果をファイルに保存するには、リダイレクトを使用します。
find . -name '.*' >output-file.txt
答え3
zsh
(まだしていない場合)に切り替えて実行してください。
ls .*(^/)
括弧内の部分はグローバル修飾子と呼ばれ、ディレクトリを除くすべての項目が選択されたことを意味します。
通常のファイルにのみ興味があり、ディレクトリだけでなく他の特殊ファイル(名前付きパイプなど)も除外する場合は試してみてください。
ls .*(.)
答え4
次のコマンドを試してください。
find -maxdepth 1 -type f -name '.*' | sed 's/^..//'
これは、現在のディレクトリ(-maxlength 1)で「.」で始まるファイル(-type f)のみを探し、sedコマンドは各行から「./」を削除します。