web-dev-qa-db-ja.com

ls-aの出力をgrepする方法

grepの出力をlsし、それをlessにパイプして、出力をスクロールできるようにします。

これは機能しませんが、理想的には、次のように入力できます。

ls -alh | grep "file" | less

これを行う方法について何か提案はありますか?私の全体的な目標は、ファイル名に「file」が含まれている現在のディレクトリ内のすべてのファイルの変更日を表示することです。 statを読みましたが、これは私の目的には冗長すぎるようです。

1
kevinkayaks

statが「冗長すぎ」であることを想定しているのは、コマンドが他の多くの情報も出力することを意味します。特定の情報を要求しない場合は、デフォルトでこの情報が出力されます。

GNU stat

stat --printf '%y\t%n\n' -- *file*

これにより、修正タイムスタンプのみが人間が読める形式で出力され、その後にタブとファイル名が続きます。これは、サブストリングfileを含むすべてのファイル名に対して行われます。 dotglobシェルオプションをbashに設定し、shopt -s dotglob、隠しファイル名を含めることもできます。

使用する %Y 代わりに %y代わりに、エポック以降の秒単位の変更タイムスタンプを取得します。

BSDシステムでは、

stat -f '%Sm%t%N' -- *file*

代わりに(同じことを行います)。変化する %Smから%Fmエポックからの秒数を取得します。

statman 1 stat)詳細については、システムで。

5
Kusalananda