ディレクトリまたはそのサブディレクトリにあるファイルの名前を忘れてしまいました。ファイルの拡張子 (.nb) は覚えていて、作成された日時もだいたいわかっています。現在のディレクトリとサブディレクトリにあるこの拡張子を持つすべてのファイルとその作成日を一覧表示するにはどうすればよいでしょうか。私は Mac OS X を使用しています。
答え1
これを簡単に行う方法は翻訳macOSにデフォルトでインストールされています。glob 修飾子タイムスタンプやその他のメタデータでファイルを選択して並べ替えることができます。Zsh は作成時刻をサポートしていませんが、変更時刻と inode 変更時刻をサポートしています。そのうちの 1 つが作成時刻と一致する可能性があります。
これは、現在のディレクトリとそのサブディレクトリ ( ) 内の拡張子を持つ、[1,100]
最新 ( ) のom
通常 ( .
) ファイル100 個 ( ) を一覧表示します。.nb
**/
zsh -c 'ls -ltr **/*.nb(.om[1,100])'
7 日から 14 日前に変更されたファイルが一覧表示されます。
zsh -c 'ls -ltr **/*.nb(.m+6m-14)'
答え2
これで望みの成果が得られるはずです。
find . -type f -name '*.nb'|xargs stat -f '%c %N'|sort
説明
find . -type f -name '*.nb'
.nb 拡張子を持つすべてのファイルを検索します。
xargs stat -f '%c %N'
UNIX タイムスタンプを先頭にしてファイルを出力します。
sort
それを分類します。
答え3
bashの場合(Macではありません):
find . -type f -iname '*.nb'| xargs -d '\n' stat -c '%z %N'|sort
現在のディレクトリ以下でパターンに一致する 'file' タイプのエントリをすべて検索します。
(大文字と小文字を無視するには -iname を使用します)
xargsにパイプする
(-d '\n' はファイル名にスペースを入れるために区切り文字を改行文字に変更します)
その後、
(出力形式は -c、%z = 最後のステータス変更、%N 引用符で囲まれたファイル名)
出力をソートする
答え4
find -name '*.nb' -exec ls -rtl {} +
r
パターンに一致するすべてのファイルの詳細情報を表示し、古いものから新しいものの順に並べ替えます (コマンドからオプションを削除すると、新しいものから古いものの順に並べ替えることができますls
)。
末尾のは+
、一致するたびにコマンドを実行するのではなく、検索の最後にコマンドを実行することを意味します。
注記: これは、適度な量の一致がある場合にのみ機能します。コマンド ラインが長すぎる場合は、ls
複数の に分割されls
、複数のソートされたサブセットが生成されますが、リスト全体は正しくソートされません (指摘してくれた @Gilles と @rudimeier に感謝します)。